TI DSP+ARM处理器典型用法-AD采集处理综合案例 - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2515|回复: 0

TI DSP+ARM处理器典型用法-AD采集处理综合案例

[复制链接]

94

主题

97

帖子

790

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
790
发表于 2020-10-21 11:28:53 | 显示全部楼层 |阅读模式



1 案例功能
TI AM5708DSP端使用EDMA通过GPMC接口采集AD7606ADS8568模块8通道的AD信号,同时由DSP对其中6通道的AD信号进行FFT处理,最后将8通道时域数据和经FFT处理的6通道频域数据保存到DSPL2SRAM中,可通过仿真器与CCS软件查看对应通道的时域波形和频域波形。
程序保存通道0的时域数据和经FFT处理的频域数据至CMEM(共享内存)空间,通过IPC组件通知ARM端读取该通道的时域数据和频域数据,使用QtLCD显示屏上进行波形绘制,最后将数据保存到文件中。


2 案例框图
1 (1).png
1

3 案例演示

3.1 硬件连接
案例基于创龙科技的TL570x-EVM(AM5708)评估板、TL7606I(AD7606)模块、TL8568I(ADS8568)模块进行测试。
1 (2).png
TL570x-EVM评估板(AM5708C66x DSP+Cortex-15 ARM
  
1 (4).png
  TL7606I模块硬件连接示意图

1 (5).png
TL8568I模块硬件连接示意图

3.2 案例测试
按照用户手册操作步骤进行程序的加载,程序运行后,即可在LCD显示屏上看到通道0的时域波形和频域波形。

1 (6).png
时域波形
1 (7).png
频域波形

亦可使CCS软件查看存储在DSPL2SRAM中的时域和频域波形。

1 (8).png
时域波形

1 (9).png
频域波形


点击菜单栏放大按钮进行放大查看,点击file:///C:\Users\lmz\AppData\Local\Temp\ksohtml10972\wps10.jpg打开游标工具,再点击X-Axis可查看到信号存在,如下图所示。

1 (11).png
2

程序已将6通道的频域数据保存到DSPL2SRAM,如需查看其他通道波形,请按照上述方法打开对应通道地址查看即可。



4 关键代码4.1 ARM(Host)端关键代码
1 (12).png
3 Qt程序框架

(1) 解析命令行参数,并显示Qt主窗口。
1 (13).png
4 host/main.cpp

(2) 申请CMEM共享内存空间,并转换为实际物理地址。在共享内存空间中申请两个Buffer空间,分别用于存放AD信号时域数据和经FFT处理的频域数据。申请的两个Buffer空间的内存地址将会发送至DSP端,DSP端将一个通道的AD信号时域数据和经FFT处理的频域数据存放在Buffer空间。
1 (14).png
5 host/app.c

(3) 发送App_CMD_SETUP消息类型至DSP,该消息携带申请好的Buffer空间物理地址等信息并等待DSP返回消息。

1 (15).png
6 host/app.c
7 host/app.c

(4) 发送App_CMD_TEST消息类型至DSP端,该消息主要通知DSP端进行AD信号采集。DSP端每次采集512个点,并保存AD信号时域数据和经FFT处理的频域数据。消息还携带loop_times参数,已设置为8DSP循环8次,即采集并处理8x512=4096个点后返回消息至ARM端。
当运行“./app_host 0x01000000 6 10000 /home/root 7606”命令时,程序循环次数设置为10000,则总采样点个数为:4096*10000=40960000
1 (16).png
8 host/app.c

(5) 发送App_CMD_SHUTDOWN信息类型至DSP端,通知DSP端结束程序的运行,并等待DSP端返回消息。
1 (24).png
9 host/app.c

(6) Qt App线程接收到DSP端的通知后,通过信号槽通知主线程绘制波形。
1 (19).png
10 host/app_thread.cpp


(7) 分别绘制时域波形和频域波形
1 (20).png
11 host/plot.cpp

(8) 将时域频域数据写入文件
1 (21).png
12 host/file.cpp

4.2 DSP(Slave)端关键代码
(1) 监听slaveQue消息队列,等待ARM端发送消息
根据消息携带的“msg->cmd”参数判断不同的消息类型,从而进入相应的处理函数处理结束后,返回消息至ARM端。

1 (22).png
13 dsp1/Server.c

(2) 响应ARM端发送的App_CMD_SETUP消息类型,调用ad_initad_test_init初始化函数。

1 (23).png
14 dsp1/Server.c

ad_init()主要实现TimerGPIOGPMC等和AD芯片硬件相关的程序初始化。

15 dsp1/ad_test.c

1 (25).png
16 dsp1/ad_test.c

ad_test_init()主要用于程序运行环境的准备,如信号量、内存申请、EDMA3初始化、FFT初始化等。

1 (26).png
17 dsp1/ad_test.c

(3) 程序通过EDMA GPIO event方式采集AD信号

定时器创建后,将以固定的时间间隔进入定时器中断服务函数。在中断服务函数中通过CONVST引脚触发AD信号采集来控制采样频率。每次采集转换完成后,AD芯片的Busy引脚将触发GPIO2的下降沿中断,从而触发EDMA传输。

1 (27).png
18 dsp1/ad_test.c

(4) EDMA传输完成后,将进入EDMA中断服务函数。在中断服务函数中统计采样点个数,当采样点个数达到ADC_SAMPLING_FFT_NUM(512)个后,将置位信号量,通知任务进行数据处理。

1 (28).png
19 dsp1/ad_test.c

(5) DSP响应ARM发送的App_CMD_SETUP消息类型,调用ad_test()进行数据处理
①         使能定时器,使定时器按固定周期触发AD信号采集。
②        阻塞等待信号量置位,信号量置位后,对数据进行保存、FFT运算等操作。

1 (29).png
20 dsp1/ad_test.c

1 (30).png
21 dsp1/ad_test.c
5 应用场合
1 (31).png

6 源码、资料下载
案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点击下方链接或扫码二维码获取。
1 (32).png




更多方案,欢迎与Tronlong联系

总机:020-89986280
1 (33).png
微信公众号



1 (3).png
1 (10).png
1 (17).png
1 (18).png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-18 22:43 , Processed in 0.046985 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表