news 2026/9/11 5:25:10

DSP28335与AD7606通过SPI通信实现八路信号采集及SCI发送至上位机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DSP28335与AD7606通过SPI通信实现八路信号采集及SCI发送至上位机

Dsp28335利用spi与ad7606通信,采集八路信号,通过sci发送到到上位机显示数值和波形

在嵌入式系统开发中,数据采集与传输是非常常见的需求。今天咱们来聊聊如何利用DSP28335芯片通过SPI接口与AD7606模数转换器通信,采集八路信号,并通过SCI接口发送到上位机显示数值和波形。

硬件连接

首先得把DSP28335和AD7606的硬件连接搞清楚。DSP28335的SPI接口相关引脚,像SPISOMI(主入从出)、SPISIMO(主出从入)、SPICLK(SPI时钟)、SPISTE(从机选择)要与AD7606对应的引脚连接好。另外,AD7606的转换启动信号可以由DSP的GPIO控制,转换完成信号可以接到DSP的外部中断引脚,方便我们及时获取转换结果。

SPI通信代码实现

在代码方面,先初始化SPI模块。以C语言为例:

void InitSPI(void) { // 使能SPI时钟 EALLOW; SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; EDIS; // 配置SPI引脚为外设功能 GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // SPISIMO GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // SPISOMI GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // SPICLK GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // SPISTE // 配置SPI控制寄存器 SpiCtrlRegs.SPICCR.all = 0x000F; // 复位SPI, 8位模式, 高位在前 SpiCtrlRegs.SPICTL.all = 0x0006; // 主机模式, 使能SPI, 连续模式 SpiCtrlRegs.SPISTS.all = 0x0000; // 清除状态标志 SpiCtrlRegs.SPIBRR = 63; // 波特率 = SYSCLKOUT / (SPIBRR + 1), 这里设置波特率相对较低 SpiCtrlRegs.SPIPRI.bit.FREE = 1; // 自由运行模式 SpiCtrlRegs.SPICCR.bit.SPISWRESET = 1; // 释放SPI }

上面这段代码,首先使能了SPI时钟,然后将相关GPIO引脚配置为SPI外设功能。接着对SPI控制寄存器进行设置,包括复位SPI、设置数据模式、主机模式、波特率等,最后释放SPI使其开始工作。

AD7606采集八路信号

采集八路信号需要对AD7606进行控制和数据读取。下面是简单的采集代码示例:

Uint16 ReadAD7606(void) { Uint16 data; // 启动转换 GpioDataRegs.GPACLEAR.bit.GPIO4 = 1; // GPIO4控制AD7606转换启动 GpioDataRegs.GPASET.bit.GPIO4 = 1; // 等待转换完成 while (GpioDataRegs.GPADAT.bit.GPIO5 == 0); // GPIO5为转换完成信号 // 读取数据 SpiCtrlRegs.SPITXBUF = 0x0000; // 发送任意数据以启动SPI传输 while (SpiCtrlRegs.SPISTS.bit.BUFFULL_FLAG == 1); // 等待发送完成 data = SpiCtrlRegs.SPIRXBUF; // 读取接收缓冲区数据 return data; } void CollectEightChannels(void) { Uint16 adData[8]; for (int i = 0; i < 8; i++) { adData[i] = ReadAD7606(); } // 这里adData数组就存储了八路采集的数据 }

在这段代码中,ReadAD7606函数先通过GPIO引脚启动AD7606的转换,然后等待转换完成信号。转换完成后,通过SPI发送一个数据启动SPI传输,再从接收缓冲区读取转换后的数据。CollectEightChannels函数则循环调用ReadAD7606函数采集八路信号,并将数据存储在数组adData中。

SCI发送数据至上位机

采集完数据,还得通过SCI发送到上位机。同样先初始化SCI模块:

void InitSCI(void) { // 使能SCI时钟 EALLOW; SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; EDIS; // 配置SCI引脚为外设功能 GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; // SCITXDA GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; // SCIRXDA // 配置SCI控制寄存器 SciaRegs.SCICCR.all = 0x0007; // 8位数据, 无校验位, 1个停止位 SciaRegs.SCICTL1.all = 0x0003; // 使能SCI接收和发送 SciaRegs.SCIHBAUD = 0x0001; SciaRegs.SCILBAUD = 0x00E7; // 波特率设置为9600 SciaRegs.SCICTL2.all = 0x0003; // 使能发送和接收中断 SciaRegs.SCICTL1.bit.SWRESET = 1; // 释放SCI } void SendDataToPC(Uint16 *data, int length) { for (int i = 0; i < length; i++) { while (SciaRegs.SCICTL2.bit.TXRDY == 0); // 等待发送准备好 SciaRegs.SCITXBUF = data[i]; // 发送数据 } }

InitSCI函数使能SCI时钟,配置引脚为外设功能,并设置SCI控制寄存器和波特率。SendDataToPC函数则将采集到的数据通过SCI发送到上位机,它会循环检查发送准备好标志位,然后依次发送数据。

上位机显示

上位机这边可以使用一些常见的软件,像LabVIEW、MATLAB等来接收并显示接收到的数据。以LabVIEW为例,通过VISA串口通信模块接收数据,然后使用图形化控件来显示数值和波形。这样就完成了从硬件连接、代码实现到上位机显示的整个流程,成功实现了DSP28335利用SPI与AD7606通信采集八路信号并通过SCI发送到上位机显示数值和波形的功能。

以上就是这次分享的全部内容啦,希望对正在研究这方面的小伙伴有所帮助,有问题欢迎一起讨论。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 1:34:27

2025必备10个降AI率工具,MBA必看!

2025必备10个降AI率工具&#xff0c;MBA必看&#xff01; AI降重工具&#xff1a;MBA论文的隐形助手 随着人工智能技术的迅猛发展&#xff0c;AI生成内容&#xff08;AIGC&#xff09;在学术写作中的应用日益广泛。然而&#xff0c;对于MBA学生而言&#xff0c;如何有效降低论文…

作者头像 李华
网站建设 2026/9/11 0:53:04

SVG 椭圆详解

SVG 椭圆详解 SVG(可缩放矢量图形)是网页设计中的一个重要工具,它允许开发者创建高质量、可缩放的图形,这些图形在网页中可以无缝地适应不同的分辨率。在SVG图形中,椭圆是一个非常基础的图形元素,本文将详细介绍SVG椭圆的相关知识,包括其语法、属性以及应用场景。 SVG…

作者头像 李华
网站建设 2026/9/8 3:32:32

Jupyter Notebook魔法命令提升PyTorch开发效率

Jupyter Notebook魔法命令提升PyTorch开发效率 在深度学习项目中&#xff0c;你是否经历过这样的场景&#xff1a;刚配置好环境准备训练模型&#xff0c;却发现CUDA版本不兼容&#xff1b;调试网络结构时张量维度出错&#xff0c;却只能反复运行整个脚本&#xff1b;想画个损失…

作者头像 李华
网站建设 2026/9/6 14:53:28

服务定位器模式

服务定位器模式 引言 在软件开发中,服务定位器模式(Service Locator Pattern)是一种常用的设计模式,主要用于解决服务查找问题。它通过一个中心化的服务定位器来管理服务的生命周期,从而简化了服务之间的依赖关系。本文将详细探讨服务定位器模式的概念、实现方法以及应用…

作者头像 李华
网站建设 2026/9/3 5:46:13

计算机毕设java网络相册平台 基于Java的网络相册管理系统开发与实现 Java技术驱动的网络相册平台设计与构建

计算机毕设java网络相册平台bc5429 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着互联网的飞速发展&#xff0c;人们的生活方式发生了巨大的变化。在快节奏的现代生活中&…

作者头像 李华
网站建设 2026/9/4 2:16:46

如何彻底禁止Win11 自动更新? 这几种方法值得试试 !!win11更新怎么关闭?windows禁止更新工具插件,Win11永久关闭更新要怎么操作?

由于微软更新策略变更&#xff0c;出厂预装系统是无法禁用更新功能的&#xff0c;在联网检测到版本较低的情况下微软将强制推送更新通知。 那么如何彻底禁止Windows 10自动更新? win11更新怎么关闭&#xff1f;windows禁止更新工具插件,Win11永久关闭更新要怎么操作&#x…

作者头像 李华