我正在处理 MIBSPI 从器件传输测试代码。
MibSpi3是主器件、MibSpi5是从器件、我已经在 TMS570LS31HDK 上将 CLK、CS、MOSI、MISO 线路物理连接在一起。
我正在执行一个16位的传输组。
数据传输工作正常、但第一个16位主机 RX 值不是从机 TX 数据值。
16个数据值中的所有其余值都正确、只是第一个16位主机 RX 值损坏。
好像没有读取最低有效位、因为当我从从器件发送0x2222时、主器件读取0x1111 (如果在10MHz 上运行、则为0x9111)、而当从器件发送0x1111时、主器件接收到0x0888。
下面是我的代码、我附上了 整个项目的.zip 文件。
我错了什么操作、使得发送的第一个位似乎丢失了?
谢谢。
-乔
__________________________________
#define spi_slave mibspiREG5
#define spi_master mibspiREG3
Uint16 slave_tx[16]={0x2222、0x1111、0x2222、0x3333、0x4444、 0x5555、0x6666、0x7777、0x8888、0x9999 0xAAAA、0xBBBB、0xCCCC、0xDDDD、0xEEEE、 0xFFFF};
uint16 slave_rx[16]={0};
Uint16 MASTER_TX [16]={0x0123、0x0111、0x0222、0x0333、0x044、 0x0555、0x0666、0x0777、0x0888、0x0999、 0x0AAA、0x0BBB、0x0CCC、0x0DDD、0x0EEE、 0x0FFF};
uint16 master_rx[16]={0};
mibspiInit ();
while (1)
{
//将 TX 数据从 RAM 复制到 SPI 缓冲区,用于从器件和主器件
MibspiSetData (SPI_SLAVE、0、SLAVE_TX);
mibspiSetData (SPI_MASTER、0、MASTER_TX);
//启动传输
mibspiTransfer (SPI_SLAVE、0);//将等待 CS/置位
mibspiTransfer (SPI_MASTER、0);//开始传输
while (!(mibspiIsTransferComplete (SPI_MASTER、0));
mibspiGetData (SPI_MASTER、0、MASTER_Rx);
//检查从器件是否已完成--是否应该是主器件已完成,是否不需要检查?
while (!(mibspiIsTransferComplete (SPI_slave、0));
mibspiGetData (SPI_SLAVE、0、slave_Rx);
}




