工具/软件:TI-RTOS
您好!
从项目开始、我就在使用 SPI 驱动器与外部闪存进行通信。
一切都很好、直到我达到了一个我需要很快做事情的地步。
SPI 通信速度不够快、因此我开始调查原因。
我发现速度的宽吻是交易的次数。
我每次读取/写入一个字节(函数如下)。 因此、要写入整个存储器页(4096字节)、我要进行4096次事务。
uint8_t spi_send_receive_8bits (spi_handle * spiHandle、uint8_t aByte) { uint8_t rxByte; uint8_t txByte; spi_Transaction Transaction; txByte = aByte; spiTransaction.count = 1; rxTransaction.rxBuf =&rxByte; spiTransaction.txBuf =&txByte; spi_transfer (* spiHandle、&spiTransaction); return rxByte; }
我重新写入它、以便一次读取/写入64个字节。 它大幅减少了读取/写入相同4096字节所需的时间。 现在、我要进行64个事务、而不是4096个事务。
但我需要更快地完成它。
我的问题是:两个缓冲区的大小必须相同?
我有一个包含4096字节的 rxBuffer。
要从外部存储器读取一个字节、我需要发送一个虚拟字节。
我想做如下的事:
void spi_read_buffer (spi_handle * spiHandle、uint8_t * rxBuffer、uint16_t size) { spi_transport spiTransaction; uint8_t dummyByte = 0x00; spiTransaction.count = size; spiTransaction.rxBuf = rxBuffer; spiTransaction.txBuf =&dummyByte; spi_transfer (* spiHandle、 spiTransaction); }
使用相同的逻辑、我想写入一个 n 字节的 txBuffer、而不用考虑返回的字节。
两个大小相同的缓冲区的问题是、我需要创建一个具有4096字节的第二个缓冲区。 我没有可用的 RAM 或闪存。
是否有任何方法可以实现我想要做的事情?
谢谢!