IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> AM57x 多核SoC开发板——GPMC的多通道AD采集综合案例手册(下) -> 正文阅读

[系统运维]AM57x 多核SoC开发板——GPMC的多通道AD采集综合案例手册(下)

本文档适用开发环境:

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程序框架

  1. 解析命令行参数,并显示Qt主窗口。

图 37 host/main.cpp

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

图 38 host/app.c

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

图 39 host/app.c

图 40 host/app.c

  1. 发送App_CMD_TEST消息类型至DSP端,该消息主要通知DSP端进行AD信号采集。DSP端每次采集512个点,并保存AD信号时域数据和经FFT处理的频域数据。该消息还携带loop_times参数,已设置为8。DSP端每循环8次,即采集并处理8x512=4096个点后返回消息至ARM端。

当运行“./app_host 0x01000000 6 10000 /home/root 7606”命令时,程序循环次数设置为10000,则总采样点个数为:4096*10000=40960000。

图 41 host/app.c

  1. 发送App_CMD_SHUTDOWN信息类型至DSP端,通知DSP端结束程序的运行,并等待DSP端返回消息。

图 42 host/app.c

  1. Qt App线程接收到DSP端的通知后,通过信号槽通知主线程绘制波形。

图 43 host/app_thread.cpp

  1. 分别绘制时域波形和频域波形。

图 44 host/plot.cpp

  1. 将时域和频域数据写入文件。

图 45 host/file.cpp

DSP(Slave)端关键代码

  1. 监听slaveQue消息队列,等待ARM端发送消息。

根据消息携带的“msg->cmd”参数来判断不同的消息类型,从而进入相应的处理函数。处理结束后,返回消息至ARM端。

图 46 dsp1/Server.c

  1. 响应ARM端发送的App_CMD_SETUP消息类型,调用ad_init和ad_test_init初始化函数。

图 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

  1. 程序通过EDMA GPIO event方式采集AD信号。

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

图 51 dsp1/ad_test.c

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

图 52 dsp1/ad_test.c

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

备注:测试采集周期为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

补充说明

  1. 程序默认使用GPTimer6定时器以固定时间间隔触发AD模块的采集信号,控制AD模块进行采集转换。如需更换为其他定时器,请按照如下方法进行修改。

① 修改dsp1/ad_test.c文件,唤醒指定定时器的时钟。

图 55

② 修改dsp1/Dsp1.cfg文件,timerSetting[5]代表为timer6,可修改为用户指定定时器。8代表绑定定时器中断至CPU Int8,该编号一般无需改动。

图 56

③ 修改dsp1/ad_test.c文件,下图中的Timer_create()的参数5可修改为用户指定的定时器。

图 57

  1. 程序使用DSP端初始化GPMC总线,并设置GPMC时序。可查看dsp1/ad_test.c中的gpmc_init()的GPMC配置方式与时序参数。

图 58

图 59

好了,本期的案例分享就到这里了,想要查看关于TL570x-EVM开发板(异构多核SoC)的规格书,详细参数资料更多内容,欢迎评论区留言。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 12:00:08  更:2022-05-13 12:02:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:58:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码