SPI一直摸不透,芯片有个叫NSS的脚,说明书写有软件模式有硬件模式软件模式其实就是将NSS作为普通引脚用,硬件模式我一开始以为会根据发送寄存器置位时候NSS自动拉低,然后发送完自动拉高,但事实根本不会,是不是我理解错误呢?
感觉发送数据大部分都耗费在NSS脚控制,和等待发送完毕标记,有什么办法可以提速?或者和DMA搭配?
你理解的没错,硬件是自动的,可能你没有配置好,用的什么芯片?多看手册
stm32f0 f1 的硬件模式貌似完全沒有意義stm32g 的硬件 nss 對於某些芯片可以全自動,只能是一個單位傳輸,譬如 16 bits 模式就只能傳 2 個字節,舉例這種情況可以使用硬件 nss 的芯片:ma730 編碼器、jlx19296g-690 LCD這些限制應該是 st 公司設計的不好,其它公司的 mcu 應該有全自動 nss 且沒這麼多限制在 stm32 上也有辦法,但是比較麻煩,譬如用 timer 去控制 nss 腳,配合 dma
STM32H750的spi dma倒是可以一次触发中传输多字节数据,每组自动nss切换别的系列没有注意。
硬件NSS一般用得很少吧,如果SPI只驱动一个设备的话,直接CS拉低不用NSS就行了啊,然后根据设备通信速率最大值配置SPI的速度,DMA发送数据。
1的硬件CS比较原始,SPI关闭才释放CS,用这个系列就别用硬件CS了,软件CS照顾从设备的时序就可以,满足的话怎么快怎么来,不一定硬要延时很多。
学习了。
感谢楼主的分享,很实用了。
感谢分享
来看看