工具/软件:TI C/C++编译器
大家好。
我`m在 MSP430FR5969中使用Driverlib来运行SPI,但我发现了一些问题。
我可以使用轮询模式传输数据,但当我尝试发送0到255之间的序列 时,SPI错误地传输了大量数据。
我的代码是:
主环路:
//I2C_ADDR_DATA_BUFFER_TX (0x53,BUFFER_TEST,6);
对于(ia=0;ia<=255;ia++)
{
//I2C_M24LR_write_page (buffer_test,4*ia);
buffer_test[0]= ia;
SPITXRX (BUFFER_TEST[0]);
__DELAY周期(500);
}
SPI初始化
void spI_init(void)
{
/*用户代码开始(部分:EUSCI_A1_graceInit_prologueue)*/
/*用户初始化代码*/
/*用户代码结束(部分:EUSCI_A1_graceInit_prologueue)*/
//初始化主中继器
EUSCI_A_SPI_initMasterParam ={0};
param.selectClockSource = EUSCI_A_SPI_CLOCKSOURCE_SMCLK;
Param.clockSourceFrequency = CS_getSMCLK();
param.desiredSpiClock = 10万;
para.msbFirst = EUSCI_A_SPI_MSB_FIRST;
Param.clockPhase = EUSCI_A_SPI_PHASE DATA_Changed_ONFIRST_Captured_on_next;
Param.clockPolarity = EUSCI_A_SPI_CLOCKPOLARITY_INACILY_LOW;
PARAM.spin模式= EUSCI_A_SPI_3pin;
EUSCI_A_SPI_initMaster(EUSSCI_A1_base,¶m);
/*启用eUSCI SPI */
EUSCI_A_SPI_EN能(EUSI_A1_base);
/*禁用eUSCI SPI传输中断*/
EUSCI_A_SPI_DisableInterrupt (EUSCI_A1_BASE,EUSCI_A_SPI_Transmit_Interrupt);
/*禁用eUSCI SPI接收中断*/
EUSCI_A_SPI_DisableInterrupt (EUSCI_A1_BASE,EUSCI_A_SPI_receive _interrupt);
/*用户代码开始(部分:EUSCI_A1_graceInit_nepogue)*/
/*用户代码*/
/*用户代码结束(部分:EUSCI_A1_graceInit_nepogue)*/
__DELAY周期(100);
INIT_SPICS();
}
SPI TRASMIT
unsigned char SPITXRX (unsigned char datatx)
{
cs_low();
//
EUSCI_A_SPI_Spendata, EUSCI_A1_BASE,datatx);
while (EUSCI_A_SPI_isBusy (EUSCI_A1_BASE));
cs_high ();
返回0;
}
我的硬件和带有XTAL 14.7656MHZ的Launchpad显示相同的位错误。如何解决?
谢谢,顺祝商祺!


