Nano 系列 SPI 从机模式可达 16M, 若主机那边不间断高速发送, 从机一侧 CPU 任务又太多, 可能 CPU 来不及读出 SPI 接收的数据, 产生接收数据覆盖。
如何接收这种高速 SPI 数据流?
Nano系列的 SPI 收发各有8个字的 FiFo。 每次 SPI 产生接收中断, 可读空 FiFo 把数据转移至 RAM 一个环形缓冲区, 再由相应函数处理。 在本例中, 环形缓冲区的数据再通过 UART0 转发出去,可由 PC 机显示出来验证。
当 SPI 总线字符之间的时间间隔只有一个 SPI 时钟时,本代码可做到 7.35M 速率不丢数据——100个字符123us 发完的速度。更快的 SPI 数据流接收, 见另一例程“Nano_SPI 从机模式 21M 速率全速收发代码” 。
Smpl_I2C_Gsensor_ARD08.7z
(1.7 MB, 下载次数: 1786)
如果用本论坛“Nano 高速 SPI 发送代码,可用于 SPI 测试” 那个代码做发送,要配置 SPI 波特率: SPI_Tx_Init(5) 。可看到接收板的 UART0 不停输出 SPI 接收到的信息如下图:
Angus
|
|