主题中讨论的其他器件:AMC7820
工具/软件:Code Composer Studio
您好!
在我的设计中、我必须在 SPI2中配置2个从机模块。
我使用的从机模块是 TI- AMC7820。
首先、我尝试配置单个 SPI 模块。
我使用的引脚是 PD0、PD1和 PD3。 从器件1的片选为 PK3。
我已经修改了将0x2345写入寄存器并读回它的代码。 但我读回的是 NULL
init、read 和 write 函数如下所示。
void SSI2Init (void)//SPI 2初始化
{
//
必须启用 SSI2外设才能使用。
//
SysCtlPeripheralEnable (SYSCTL_Periph_SSI2);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);//为
端口 D0、D1和 D3上的 SSI0函数配置引脚多路复用。
//
GPIOPinConfigure (GPIO_PD0_SSI2XDAT1);
GPIOPinConfigure (GPIO_PD1_SSI2XDAT0);
GPIOPinConfigure (GPIO_PD3_SSI2CLK);
// GPIOPinConfigure (GPIO_PA3_SSI0FSS);//这不是因为 CS 是 GPIO_PIN1引脚
输出引脚/ GPIO_PIN1引脚输出引脚1引脚、GPIO_PIN1引脚输出引脚1引脚
GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将其设为高电平、因为它为低电平有效
//
//配置 SSI 引脚的 GPIO 设置。
//
GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_3 | GPIO_PIN_1 | GPIO_PIN_0);
//
为 SPI 主控模式配置和启用 SSI 端口。 使用 SSI2、
//
SSIConfigSetExpClk (SSI2_base、g_ui32SysClock、SSI_FRF_TI、
SSI_MODE_MASTER、 1000000、8);
//
//启用 SSI2模块。
//
SSIEnable (SSI2_base);
//
从 SSI 端口读取任何残留数据。
//
while (SSIDataGetNonBlocking (SSI2_base、&pui32DataRx[0])
}{
}
void SPI2Read (void)
{
pui32DataTx[0]= 0x82;//从寄存
器 pui32DataTx[1]= 0x40读取;
GPIOPinWrite (GPIO_PORTK_= 0x32
);//使用 i32+引脚索引</ u32+、uCS 函数;/u32+、u32+、u32+、u32+、u32eUS+、u32e+、u32e+、i32eUS+、i240/ u32u240/ u240/ u240/ u240/ u240u240u240u240u240u240u240u240u 此函数
//将等待发送 FIFO 中有空间后再返回。
//这使您可以确保发送的所有数据都将其放入
//发送 FIFO 中。
//
SSIDataPut (SSI2_base、pui32DataTx[ui32Index]);
}
//
//等待 SSI0完成传输发送 FIFO 中的所有数据。
//
while (SSIBusy (SSI2_base)
){
}
//接收2个字节的数据。
//
for (ui32Index = 0;ui32Index < 2;ui32Index++)
{
//
//使用“阻塞”GET 函数接收数据。 此函数
//将等待接收 FIFO 中有数据后再返回。
//
SSIDataGet (SPIBase、&pui32DataRx[ui32Index]);
//由于我们使用的是8位数据,因此屏蔽 MSB。
//
pui32DataRx[ui32Index]&= 0x00FF;
}
GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将 CS 重置为高
电平}
void SPIwrite (void)
{
pui32DataTx[0]= 0x02;
pu32DataTx[1]= 0x40=PIPTX=0x40_PIPTH
;pitTx23_GPIOPTH GPIO_PIN_3、0)// CS 低电平;AMC 期望低电平有效控制信号
(ui32Index = 0;ui32Index < 4;ui32Index++)
{
//
//使用“阻塞”Put 函数发送数据。 此函数
//将等待发送 FIFO 中有空间后再返回。
//这使您可以确保发送的所有数据都将其放入
//发送 FIFO 中。
//
SSIDataPut (SSI2_base、pui32DataTx[ui32Index]);
}
//
//等待 SSI0完成传输发送 FIFO 中的所有数据。
//
while (SSIBusy (SSI2_base)
{
}
GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将 CS 重置为高
电平}
请帮帮我。
提前感谢。