|
楼主 |
发表于 2018-7-10 11:48:48
|
显示全部楼层
终极测试,确认是DMA带宽问题导致
主程序里面用WFI指令停掉CPU,避免CPU占用总线带宽
一个IO口输出翻转指示中断程序
两个SPI的情况,改善不大,某些时刻还是不连贯
单个SPI的情况,效果很明显,仅有DMA占用总线时,SCK是连贯的;同时CPU和DMA同时访问总线,会导致不连贯
说明是带宽不够所导致
第二张截图里面,DMA启动不久,CPU就停止工作了,不连贯现象只会出现一次,可以通过先发送两个字节的0x00做到CPU不影响正常发送
- void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
- HAL_SPI_Transmit_DMA(hspi, spi_SendBuf, SENDLENGTH);
-
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|