DSP与STM32的SPI通信调试及浮点数据传输调试
来源:互联网 发布:下载伴奏的软件 编辑:程序博客网 时间:2024/05/22 07:50
首先整体简述下传输过程,DSP与STM32为SPI三线连接,无片选信号;DSP有一GPIO引脚连接至STM32外部中断引脚(在此处称为DataReady引脚);SPI虽然为全双工,但是在此项目中只需要DSP传输给STM32的数据,而不关心STM32传输给DSP的数据。STM32作为主机,DSP作为从机。为了节约CPU,从主机均使用SPI的DMA传输。数据传输的整体流程是这样的:DSP准备好数据后,会通过DataReady引脚由低电平变为高电平来触发STM32的外部中断,STM32在外部中断中将DMA开启,然后数据开始传输,STM32传输完成进入DMA传输完成中断,关闭DMA,STM32对收到的数据进行处理。
下面简述DSP这边需要做的工作:
熟悉C672x系列的人都知道,DMA在此系列芯片中占有相当大的作用(在C672x中称为dMAX)。DMA在C672x中可以进行数据传输、接收外部中断信号、触发CPU中断等等。
对SPI及DMA进行配置:先对SPI进行配置,具体流程参考C672x的SPI手册(下面我也会贴出代码);然后对DMA的事件入口及传输入口进行配置。
我没有用TI公司提供的CSL库,一开始是倾向于用CSL库的,但是在调试过程中发现麻烦重重,有些繁琐,而且好多函数不可见,封装在了.lib库里,远不如自己写驱动更简单方便。在main函数中调用上面的驱动函数后,只要STM32一开启DMA,就会有数据进入到C6722的SPI数据寄存器中,C6722就会触发SPI的DMA,传输开始。而且在传输过程中不需要CPU干预。
还有一个问题需要注意。SPI0的三个引脚SPI_SOMI,SPI_SIMO,SPI_CLK跟C6722的Parallel Flash启动有关,上电时刻三个引脚的状态直接决定Parallel Flash启动能不能成功。刚开始调试时,DSP与STM32均下载好程序后,发现DSP无法启动,后来在DSP的仿真状态下查看CFGPIN0寄存器发现SPI_CLK的引脚状态为1(若想Parallel Flash启动成功,SPI_CLK的引脚状态应该为0)。后来仔细想,在STM32中没放程序的时候DSP启动没问题,所以可能是STM32的SPI驱动程序使得SPI_CLK的引脚状态在DSP捕获其时发生了变化,所以我在STM32调用SPI的驱动程序之前加了个延时,然后就好了,DSP可以正常启动。
接下来是STM32这方面需要做的工作:
STM32网上资料较多,而且也用的极其大众化,所以直接贴驱动代码。
- DSP与STM32的SPI通信调试及浮点数据传输调试
- ARM与DSP的PCIE通信调试
- DSP F2812 SPI调试
- STM32 spi与FPGA的通信
- 基于CC2530的SPI通信调试笔记
- s5pv210与stm32 spi通信
- STM32F103与STM32F407的SPI调试笔记
- 基于STM32与NOR FLASH的SPI通信
- DM355的SPI调试
- spi的调试方式
- 定点dsp与浮点dsp的比较
- stm32串口通信调试总结
- STM32下调试CAN通信
- Java程序与串口的通信实现及调试
- Java程序与串口的通信实现及调试
- STM32与FPGA通过SPI通信
- DSP调试
- DSP调试
- TextView selector 使用
- ecshop开发之属性直接填写价格
- 一个细节看同为腾讯公司的微信和手Q两个团队的工作态度
- DroidPlugin插件框架 - 《Android必备技能》
- 关联(Associative)
- DSP与STM32的SPI通信调试及浮点数据传输调试
- android studio生成aar包并在其他工程引用aar包
- ROS Learning-015 learning_tf(编程) 编写一个监听器程序 (Python版)
- openlayer3加载geoserver发布的WFS服务
- iOS上 关于状态栏的相关设置(UIStatusBar)
- android textView 加载HTML 异步加载网络图片
- 安卓Studio学习笔记---gradle自定义BuildConfig.DEBUG实现在调试输出Log,正式的时候不输出Log
- Leetcode (41) First Missing Positive
- java 23种设计模式