tgcopter v3.x开发记录---stm32f4与arduino通过SPI的DMA通信
来源:互联网 发布:短篇小说 知乎 编辑:程序博客网 时间:2024/05/22 07:57
一直用SPI作为arduino(Master)和STM32(Slave)的通信介质,已获得较为高速稳定的通信链路。之前STM32F103非常轻松的就搞定了这个部分,这次考虑到F4xx芯片有FPU和DSP能力就打算迁移固件中的BSP程序。没想到整个过程异常的诡异,足足花了我半个月的时间才搞定。特记录分享一下!
F4xx相比F1xx在总线系统和DMA通道管理上有非常大的变化,虽然官方提供的外设库接口基本不变,弄出SPI普通的中断通信方式还是很容易的,但要使用DMA进行数据接收问题就来了。明明能在直接中断方式下双向正常通信了,加入DMA后就变成STM32输出正确,接收错误。反复切换直接中断方式和DMA方式怎么都搞不明白为何出现这个问题。调试期间我把F4xx的DMA的一些高级模式(FIFO、Double Buffer、Circle Mode)禁用或打开,仍然无法改善。弄得我几乎要绝望了,打算放弃了。
周四晚上去俱乐部打球回来已经快22点了,洗澡后不死心的又坐到工作台上,听着“艾宝良的鬼吹灯”,冥思!!突然,我想到还有一组参数没有修改对比测试过(SPI的CPOL和CPHA的模式设置),但这个在SPI直接中断模式下已经测试通过了呀,它是SPI的特性,怎么会和DMA有关系呢?虽有疑惑,但还是打算折腾一下这块,结果却让人意外的,四种SPI模式中居然只有2组能适应DMA模式,问题搞定了。应该说是“粽子”被我扔的“黑驴蹄子”摆平了。
CPOL=0,CPHA=0,MISO正常,MOSI异常
CPOL=0,CPHA=1,MISO异常,MOSI正常
CPOL=1,CPHA=0,MISO正常,MOSI正常
CPOL=1,CPHA=1,MISO正常,MOSI正常
采用正常配置后,连F4xx的高级DMA模式都可以正常使用了!
- tgcopter v3.x开发记录---stm32f4与arduino通过SPI的DMA通信
- Pixy(Cmucam5)通过SPI与Arduino通信
- 基于UCOSII的DMA-SPI通信
- STM32 SPI DMA通信
- 使用W5200 SPI和SPI+DMA模式下Arduino DUE以太网插板的测试对比
- 关于YL2410 DMA 与SPI 的问题
- stm32f4中通过dma采集adc
- 手机通过蓝牙串口与arduino通信
- STM32的使用之SPI通信DMA模式
- 记录stm32f4与stm32f1的不同
- stm32f4**开发相关记录
- SPI的驱动 dma
- SPI DMA 的使用
- SPI 的DMA接收
- STM32F4 DMA
- Raspberry pi通过SPI与FPGA通信
- STM32与FPGA通过SPI通信
- IIC通信(STM32F4与AT24C02的通信)
- DDK 编译版本问题
- linux下无法解析或打开软件包的列表或是状态文件 解决方案
- WPF中对Excel文件的导入导出操作详解
- linux inotify研究5
- 网页编程基础第五章知识点总结——框架 表单
- tgcopter v3.x开发记录---stm32f4与arduino通过SPI的DMA通信
- put_user & get_user
- 金融总结十 上交所和深交所的集合竞价
- HDU 2795
- ZigBee属性表-中文解释
- PC ubuntu添加yaffs2支持+nandflash模拟
- 选择排序
- 三种客户端访问wcf服务端的方法 C#
- Min and Max Timing Paths--时序路径