主题中讨论的其他器件:AMC7820、 TM4C123
工具/软件:Code Composer Studio
您好!
我正在使用 TM4C129ENCPDT。 我想使用 SPI 与 AMC7820通信。 我正在将值写入 AMC 7280的 DAC0、并使用 SPI 进行回读。
当我执行多个读操作时,首先读回值正确,然后显示随机值。 经过一个周期后、它会显示正确的值
void SPIRead (int 端口、int 引脚、uint8_t * pui32DataTx、uint32_t ui32Count、int SPIBase)
{
char buf[25]={0};
int ireadValue=0;
GPIOPinWrite (端口、引脚、0);// CS 低电平;AMC 预期低电平有效控制信号
SysCtlDelay (SysCtlClockGet ()/3);//1秒延迟
SSIDataPut (SPIBase、pui32DataTx[0]);
SysCtlDelay (SysCtlClockGet ()/100);
while (SSIBusy (SPIBase));
SSIDataPut (SPIBase、pui32DataTx[1]);
SysCtlDelay (SysCtlClockGet ()/100);
//
//等待 SSI0完成传输发送 FIFO 中的所有数据。
//
while (SSIBusy (SPIBase));
for (ui32Index = 0;ui32Index < ui32Count;ui32Index++)
{
SSIDataPut (SPIBase、0xFF/*pui32DataTx[ui32Index]*/);
SSIDataGet (SPIBase、&pui32DataRx[ui32Index]);
}
SysCtlDelay (SysCtlClockGet ()/100);
while (SSIBusy (SPIBase));
pui32DataRx[0]&= 0x00FF;
pui32DataRx[1]&= 0x00FF;
GPIOPinWrite (端口、引脚、引脚);//将 CS 复位为高电平
SysCtlDelay (SysCtlClockGet ()/3);//1秒延迟
ireadValue = pui32DataRx[0];
ireadValue = ireadValue << 8;
ireadValue |= pui32DataRx[1];
sprintf (buf、"SPI 读取<%x>\n"、ireadValue);
UARTSend (((uint8_t *) buf、strlen (buf)、UART5_BASE);
}
void SPIwrite (int 端口、int 引脚、uint8_t * pui32DataTx、uint32_t ui32Count、int SPIBase)
{
char buf[25]={0};
int ireadValue=0;
GPIOPinWrite (端口、引脚、0);// CS 低电平;AMC 预期低电平有效控制信号
SysCtlDelay (SysCtlClockGet ()/3);//1秒延迟
//SysCtlDelay (SysCtlClockGet ()/100);
SSIDataPut (SPIBase、pui32DataTx[0]);
SysCtlDelay (SysCtlClockGet ()/100);
while (SSIBusy (SPIBase));
SSIDataPut (SPIBase、pui32DataTx[1]);
SysCtlDelay (SysCtlClockGet ()/100);
while (SSIBusy (SPIBase));
for (ui32Index = 2;ui32Index < ui32Count;ui32Index++)
{
SSIDataPut (SPIBase、pui32DataTx[ui32Index]);
SSIDataGet (SPIBase、&temp1/*和 pui32DataRx[ui32Index-2]*/);
}
while (SSIBusy (SPIBase));
GPIOPinWrite (端口、引脚、引脚);//将 CS 复位为高电平
SysCtlDelay (SysCtlClockGet ()/100);
ireadValue = pui32DataTx[2];
ireadValue = ireadValue << 8;
ireadValue |= pui32DataTx[3];
sprintf (buf、"SPI write <%x>\n"、ireadValue);
UARTSend (((uint8_t *) buf、strlen (buf)、UART5_BASE);
}
等待您的建议
此致
GPM