工具/软件:Code Composer Studio
当我设置 SPICCR = 0x0F 时、SPI 可以正常工作、并且我可以通过两 个 SPI 读取周期从传感器获取正确的数据、但在我的应用中、我只需要24位数据、为了节省读取时间、我必须 分别发送三个8位数据。
因此、我设置 SPI SPICCR = 0x07、字符长度= 8、但当我发送8位数据时、有16个时钟。
如何发送具有8个时钟的8位数据?
谢谢。
这是 SPI 初始化函数:
空 IC_MU_SPI_Init (空)
{
SPI_Fifo_init();
SpiaRegs.SPICCR.all =0x0007;//复位打开、上升沿、8位字符位
SpiaRegs.SPICTL.ALL =0x0006;//启用主控模式、正常相位、
//启用 TALK、禁用 SPI int。
SpiaRegs.SPICTL.bit.TALK = 1;
SpiaRegs.SPIBRR = 0x0002;
SpiaRegs.SPICCR.all =0x008F;//从复位中撤回 SPI
SpiaRegs.SPICCR.bit.CLKPOLARITY = 1;
SpiaRegs.SPIPRI.bit.FREE = 1;//设置断点以避免干扰 xmission
}
//SPI FIFO 初始化
void SPI_Fifo_init()
{
//初始化 SPI FIFO 寄存器
SpiaRegs.SPIFFTX.All=0xE040;
SpiaRegs.SPIFFRX.All=0x2044;
SpiaRegs.SPIFFCT.All=0x0;
}
这是测试读取函数:
void IC_MU_ReadAngle_8位(void)
{
unsigned char temp;
GpioDataRegs.GPACLEAR.bit.GPIO19=1;
SPI_xmit_8bit (((UINT16)(0xA6<8));
while (SpiaRegs.SPIFFRX.bit.RXFFST!=1){}
temp = SpiaRegs.SPIRXBUF;
}