本文档适用开发环境:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
Linux Processor SDK:ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05
RTOS Processor SDK:ti-processor-sdk-rtos-am57xx-evm-04.03.00.05
CCS:CCS7.4
本案例主要是通过GPMC接口采集AD7606或ADS8568模块输入的AD信号,由DSP端对AD信号进行FFT处理,并由ARM端对AD信号进行Qt波形绘制、数据保存等,其中使用到的测试板卡为创龙科技的TL570x-EVM工业开发板。
创龙科技TL570x-EVM是一款基于TI Sitara系列AM5708 ARM Cortex-A15 + 浮点DSP C66x处理器设计的异构多核SoC评估板,由核心板和评估底板组成。典型应用在运动控制、工业PC、机器视觉、智能电力、视频监测等领域。
核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。开发板接口资源丰富,引出双路PRU百兆网口、千兆网口、USB 3.0、CAMERA、GPMC、HDMI、PCIe等接口,方便用户快速进行产品方案评估与技术预研。
接下来给大家分享案例编译和ARM(Host)端、DSP(Slave)端)的关键代码部分,
案例编译请按照IPC异构多核开发手册搭好建基于Linux的IPC开发环境,并使能环境变量,然后按照如下方法编译案例。
将案例目录拷贝到Ubuntu,并将lib目录下的QWT库文件压缩包libqwt-6.1.3.tar.gz解压到lib目录下。
图 31
进入src目录并打开products.mak文件,根据实际情况配置libqwt-6.1.3的目录路径。
Host# vim products.mak
图 32
图 33
修改完毕后保存退出,执行如下命令加载Linux Processor SDK环境变量,编译程序并安装程序镜像文件。
Host# source /home/tronlong/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/environment-setup
Host# make -j 8 && make install
图 34
命令执行完毕后,将在“install/tl-gpmc-ad-fft/debug/”目录下生成ARM端和DSP端可执行文件,分别为app_host和server_dsp1.xe66。
图 35
关键代码ARM(Host)端关键代码图 36 Qt程序框架
图 37 host/main.cpp
图 38 host/app.c
图 39 host/app.c
图 40 host/app.c
当运行“./app_host 0x01000000 6 10000 /home/root 7606”命令时,程序循环次数设置为10000,则总采样点个数为:4096*10000=40960000。
图 41 host/app.c
图 42 host/app.c
图 43 host/app_thread.cpp
图 44 host/plot.cpp
图 45 host/file.cpp
DSP(Slave)端关键代码根据消息携带的“msg->cmd”参数来判断不同的消息类型,从而进入相应的处理函数。处理结束后,返回消息至ARM端。
图 46 dsp1/Server.c
图 47 dsp1/Server.c
ad_init()主要实现Timer、GPIO、GPMC等和AD芯片硬件相关的程序初始化。
图 48 dsp1/ad_test.c
图 49 dsp1/ad_test.c
ad_test_init()主要用于程序运行环境的准备,如信号量、内存申请、EDMA3初始化、FFT初始化等。
图 50 dsp1/ad_test.c
定时器创建后,将以固定的时间间隔进入定时器中断服务函数。在中断服务函数中通过CONVST引脚触发AD信号采集来控制采样频率。每次采集转换完成后,AD芯片的Busy引脚将触发GPIO2的下降沿中断,从而触发EDMA传输。
图 51 dsp1/ad_test.c
图 52 dsp1/ad_test.c
备注:测试采集周期为6us,采集满ADC_SAMPLING_FFT_NUM(512)个点后置位信号量,通知任务进行数据处理,所以设置Semaphore_pend超时时间为10ms,若用户设置采集周期过长,如60us,则采集满512个点需60 * 512 = 30.72ms,则需要对应增加下图Semaphore_pend超时时间。
图 53 dsp1/ad_test.c
图 54 dsp1/ad_test.c
补充说明① 修改dsp1/ad_test.c文件,唤醒指定定时器的时钟。
图 55
② 修改dsp1/Dsp1.cfg文件,timerSetting[5]代表为timer6,可修改为用户指定定时器。8代表绑定定时器中断至CPU Int8,该编号一般无需改动。
图 56
③ 修改dsp1/ad_test.c文件,下图中的Timer_create()的参数5可修改为用户指定的定时器。
图 57
图 58
图 59
好了,本期的案例分享就到这里了,想要查看关于TL570x-EVM开发板(异构多核SoC)的规格书,详细参数资料更多内容,欢迎评论区留言。
作者: Tronlong, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3881012.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论