新手入门
- 积分
- 2
- 金钱
- 2
- 注册时间
- 2019-8-2
- 在线时间
- 0 小时
|
发表于 2019-8-2 13:39:02
|
显示全部楼层
我今天也遇到了这个问题,进来看看发现你也没解决,在我检查代码后发现 SPI DMA 是支持16位的,是数据配置没对。我是F1系列。
设置数据宽度的时候有两个地方需要设置,一个是外设数据长度,一个是内存数据长度
但是这两个设置的时候变量不是共用的
比如设置内存为16位长度,参数为:DMA_MemoryDataSize_HalfWord
设置外设数据长度为16位,参数为:DMA_PeripheralDataSize_HalfWord
这两个是不能够混用的,混用就会出现这样的情况
这是官方的宏定义
#define DMA_PeripheralDataSize_Byte ((uint32_t)0x00000000)
#define DMA_PeripheralDataSize_HalfWord ((uint32_t)0x00000100)
#define DMA_PeripheralDataSize_Word ((uint32_t)0x00000200)
#define DMA_MemoryDataSize_Byte ((uint32_t)0x00000000)
#define DMA_MemoryDataSize_HalfWord ((uint32_t)0x00000400)
#define DMA_MemoryDataSize_Word ((uint32_t)0x00000800)
可以发现定义是不一样的 |
|