主题中讨论的其他器件: SysConfig
工具与软件:
您好!
我想使用德州 MSPM0G1106 IC 进行 SPI 读取和写入。
首先、我之前已经完成了使用另一个 MCU 的 SPI 读取和写入。 这是代码。
unsigned char MFRC522_SPIreceive(unsigned char address_rcv)
{
SPI_receive_address= (((address_rcv<<1)&0x7E) | 0x80);
SPI_NSS= 0;
SPI_WRITE_TX(SPI0, SPI_receive_address);
while(SPI_IS_BUSY(SPI0));
SPI_ClearRxFIFO(SPI0);
SPI_WRITE_TX(SPI0, DUMMY);
while(SPI_IS_BUSY(SPI0));
SPI_Received_data = SPI_READ_RX(SPI0);
SPI_NSS= 1;
return SPI_Received_data;
}
在查看 MCU 的调试时、我可以看到想要的值。 但当我查看 TExaS 的调试时、我读取了0xFF。 通常我应该读取0x3F。

(在下图中、您可以看到从 Logic Analayzer 中拍摄的图像)。

SPI 初始化
SPI 设置

SPI 设置
SYSCONFIG_WEAK void SYSCFG_DL_SPI_0_init(void)
{
DL_SPI_setClockConfig(SPI_0_INST, (DL_SPI_ClockConfig *) &gSPI_0_clockConfig);
DL_SPI_init(SPI_0_INST, (DL_SPI_Config *) &gSPI_0_config);
/* Configure Controller mode */
/*
* Set the bit rate clock divider to generate the serial output clock
* outputBitRate = (spiInputClock) / ((1 + SCR) * 2)
* 400000 = (16000000)/((1 + 19) * 2)
*/
DL_SPI_setBitRateSerialClockDivider(SPI_0_INST, 19);
/* Set RX and TX FIFO threshold levels */
DL_SPI_setFIFOThreshold(SPI_0_INST, DL_SPI_RX_FIFO_LEVEL_1_2_FULL, DL_SPI_TX_FIFO_LEVEL_1_2_EMPTY);
/* Enable module */
DL_SPI_enable(SPI_0_INST);
}
SPI 初始化代码

IC 引脚
配置等设置与图片中的设置相同。
我使用的代码如下所示。
unsigned char MFRC522_SPIreceive(uint8_t address_rcv)
{
uint8_t SPI_receive_address = (((address_rcv << 1) & 0x7E) | 0x80);
//MFRC_NSS_OFF;
DL_SPI_transmitData8(SPI_0_INST, SPI_receive_address);
delay_cycles(500);
while (DL_SPI_isBusy(SPI_0_INST));
DL_SPI_transmitData8(SPI_0_INST, DUMMY);
delay_cycles(500);
while (DL_SPI_isBusy(SPI_0_INST));
SPI_Received_data= DL_SPI_receiveData8(SPI_0_INST);
//MFRC_NSS_ON;
return SPI_Received_data;
}
主代码
MFRC522_SPIreceive(0x11); delay_cycles(500);
我在读取代码时是否出错? 如果是、如何解决?
提前感谢您。


