嵌入式开发者社区

标题: 开发ad7606的例程遇到了问题,希望得到大家的指点 [打印本页]

作者: 叶子wy    时间: 2015-5-25 13:33
标题: 开发ad7606的例程遇到了问题,希望得到大家的指点
最近使用ad7606的例程进行开发遇到了问题,希望得到大家的指点。$ b* X( v0 m% l" p6 T8 Z
. w0 j+ ]- W2 A$ d2 [" _4 s6 ~- ]
附件是我修改部分的程序,原例程是使用EMIFA接口连接AD模块,但是我用的是UPP接口连接FPGA,由FPGA将AD采集到的数据发给DSP,其余处理和原例程一样,于是我将原例程中的ad7606.c文件做了修改。) `- V8 s1 r/ W7 t' ~
, j/ l5 z1 I6 }* k  J
跟UPP接收数据有关的程序段,我用裸机跑通之后再整合到工程中的,整个工程在Linux下编译没有问题,运行后出现OMAPL138板子”绿屏“的情况。
  P0 g' y# E" D$ I& A4 ]; y目前我怀疑我整合过的ad7606.c文件的程序架构有问题。
- ~$ |! e4 P3 @% M! j; C* o* J* y# P7 b1 O! Q, t
希望能得到高手的指点,感激不尽!!!& @* T) n- T) _5 @/ J6 ?

作者: Lewis    时间: 2015-5-27 13:31
是UPP的管脚和LCD的管脚复用配置有冲突,把upp的XDATA管脚配置去掉就好了
作者: 叶子wy    时间: 2015-5-27 15:35
Lewis 发表于 2015-5-27 13:317 O& j* \0 S5 t5 `9 \
是UPP的管脚和LCD的管脚复用配置有冲突,把upp的XDATA管脚配置去掉就好了

/ R! D  [" J1 x) z4 b' O- s谢谢您的指点,按您说的真的好了^_^
! K. n+ J3 N, T  K
4 k' E7 S$ `' a4 g1 |, g但是现在还有一个问题是ARM端仍收不到DSP 的数据:( b( g" H" K- j0 Z" H/ f
“[INFO |run@app/sample_receiver.cpp,58] recv data timeout”
9 W2 X& b, p$ E: b& }, Q/ b% |1 _0 o! D8 l
我这程序应该还有问题,但是我已经研究了好几天也找不出原因,能帮帮我吗?" `1 o) I7 p9 [7 q% K' R( K6 \0 n

; p' r- y- T% g0 E8 H5 S% z: K8 X- l(备注:FPGA发的数据是0-65535的循环,DSP这端使用float类型存储(为了跟你们例程的数据类型一致),在CCS下调试时,发现存储的数据有点不对劲,不知道是不是问题的原因。存储的数据是这样的指数形式有正有负,有些数据指数达到十几,特别大)
作者: Lewis    时间: 2015-5-27 16:18
float类型的数据占用4个字节的存储空间,upp接收的数据会在内存中连续放置。例如你定义的是float类型的数组,upp会往这个数组的起始地址连续存放数据,也就是说按16bit的数据来看的话,是两个16bit的数据存储到了一个float数据的空间里了。
作者: tenny    时间: 2015-5-28 09:56
你可以先确认下在你的dsp端有没采到数据
作者: 叶子wy    时间: 2015-5-28 14:56
Lewis 发表于 2015-5-27 16:18- p* j- B0 Z3 U; n
float类型的数据占用4个字节的存储空间,upp接收的数据会在内存中连续放置。例如你定义的是float类型的数组 ...
% H( s6 t' S* }% M+ K
嗯,我也想到了。
' v+ a9 ^  z! {# \- g我之所以会想转换为float,是因为我看到你们的例程中的数据都是float类型的。
* `% a! Y  v& H, j2 h- e5 g0 t- ^现在我将程序的数据类型换成了unsigned short。运行程序还是接收不到数据,问题出在哪里?
+ a$ C. o* ~) j5 p
作者: 叶子wy    时间: 2015-5-28 15:00
本帖最后由 叶子wy 于 2015-5-28 15:02 编辑 1 I: m. v/ ~1 [; _! d/ ]
tenny 发表于 2015-5-28 09:56
% n9 j4 h! I  p你可以先确认下在你的dsp端有没采到数据
) g4 c; J. b( y5 w; N# E
使用UPP的裸机程序在CCS下调试,是可以接收数据的。这样能不能说明在这个例程中也是可以采到数据的?
  X: e4 e. e8 u- Y, z- w3 J你们是用的什么软件完成这么大的工程的?: T& E7 n4 [3 R- _

作者: Lewis    时间: 2015-5-28 21:37
如果是在sysbios下使用upp的话是需要维护缓存一致性的,sysbios默认是使能缓存的,在upp接收数据后,需要对接收的buffer失效其缓存,才能保证得到的是最新的数据
作者: 叶子wy    时间: 2015-5-29 09:25
Lewis 发表于 2015-5-28 21:375 B: J: v3 b* B( d* G9 o
如果是在sysbios下使用upp的话是需要维护缓存一致性的,sysbios默认是使能缓存的,在upp接收数据后,需要对 ...
; X1 |5 F3 Z0 q6 p* E1 K
原例程中也考虑了缓存一致性的问题吗?
0 d5 E! L. T8 j6 H* |这个我不懂,该怎样实现?
作者: tenny    时间: 2015-5-29 11:32
叶子wy 发表于 2015-5-28 15:007 g/ N* U7 x! m& u
使用UPP的裸机程序在CCS下调试,是可以接收数据的。这样能不能说明在这个例程中也是可以采到数据的?+ ]4 N% Q/ ?: I. J+ X2 r7 W9 ?5 ?. g
你们 ...

- `! r6 n' z6 P$ e4 ^" g# `, A* [你可以在你采集数据的地方用 LOG_DEBUG()打印数据,log模块打印的数据默认是输出到串口1
1 t7 D( Y! z2 }7 w+ M, Z
1 Z8 |. M/ V9 ]2 k" v至于工程的开发,选择合适自己开发习惯和生产环境的方式就可以了,都是各有利弊的。你可以看下创龙的双核视频教程的工程管理和工程调试部分
作者: Lewis    时间: 2015-5-29 23:16
Lewis 发表于 2015-5-28 21:37! e7 a$ e  D/ w7 S$ `4 j
如果是在sysbios下使用upp的话是需要维护缓存一致性的,sysbios默认是使能缓存的,在upp接收数据后,需要对 ...
* i2 a" }3 Z. ]9 f
#include <ti/sysbios/family/c64p/Cache.h>
- `9 v0 h& D8 ~3 L# `
/ A3 j' F, G1 R! V9 D以数组upp_buffer_a1[]为例,失效其缓存调用下面函数, g9 r: B! K( ?* y0 V
Cache_inv(upp_buffer_a1, sizeof(upp_buffer_a1), Cache_Type_ALLD, TRUE);
作者: 叶子wy    时间: 2015-6-3 08:40
Lewis 发表于 2015-5-29 23:16
; b. Y3 k) z4 X#include
( w. S9 O/ O" X( r& e- D  l6 q% F3 u5 d0 L3 \& g! b) N( U/ C3 |6 }
以数组upp_buffer_a1[]为例,失效其缓存调用下面函数

: w4 S. r$ X# M6 p; ~$ s那我应该在程序什么地方调用Cache_inv(upp_buffer_a1, sizeof(upp_buffer_a1), Cache_Type_ALLD, TRUE);这样一个函数呢?以我的那个程序为例。& F, j2 Y5 @  k: ?2 w" @. S7 ]

作者: Lewis    时间: 2015-6-7 20:01
叶子wy 发表于 2015-6-3 08:40
$ F1 [( I5 ^! c那我应该在程序什么地方调用Cache_inv(upp_buffer_a1, sizeof(upp_buffer_a1), Cache_Type_ALLD, TRUE); ...
; O. G$ O! F! u( g
upp开始接收或者完成数据接收后调用都可以,主要是upp数据是通过DMA直接搬到DDR内存里,而如果缓存里存有之前这个buffer的数据时,会导致数据不一致,所以要失效一下这个buffer的缓存
作者: 叶子wy    时间: 2015-6-8 16:48
本帖最后由 叶子wy 于 2015-6-8 16:51 编辑
" j1 g5 R% g( A- k/ N4 S7 p, s: O( G( X' S
我对之前上传的文件做了改动,也维护了缓存一致性。但在运行时总会打印“[INFO |run@app/sample_receiver.cpp,70] recv data timeout”,意思是msg为空。我只是改动了ad7606.c的文件,而且像原例程一样使用了ad->callback将数据回调,为什么msg为空?是不是我忽略了什么。
4 ~: j6 d9 {3 C9 h. X1 l我新改的程序在下面链接里,麻烦帮忙指点一下。谢谢
! f' r7 N5 ~$ s, G( chttp://blog.chinaunix.net/uid-30104746-id-5073909.html




欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4