用LM3S9B92的SPI通信,配置ADS1248,一直读不出数据
void
Ads1248Init(void)
{
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);//配置C4,C5,C6为输出
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_6|GPIO_PIN_5,0x00);//对ADS1248复位
SysCtlDelay(4);//延时
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_6,GPIO_PIN_6);
while(SSIDataGetNonBlocking(SSI0_BASE, &UART_RX[0]))
{
}//如果SSI0正在接收数据等待
//对ADS1248进行配置
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,GPIO_PIN_5); //START置1
SysCtlDelay(4);//延时
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
//while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX02[ulindex]);
//while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX02[ulindex]);//spi配置ADS1248 02寄存器 选择REF0脚输入的外部参考电压
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
//while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX03[ulindex]);
//while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX03[ulindex]);//spi配置ADS1248 03寄存器 PGA放大倍数为128 AD采样率为20HZ
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
//while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX0A[ulindex]);
//while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX0A[ulindex]);//spi配置ADS1248 0A寄存器 电流源选择100UA
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
//while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX0B[ulindex]);
//while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX0B[ulindex]);//spi配置ADS1248 0B寄存器 电流源1流过AIN0 ,电流源2流过AIN1
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
}
//读取环境温度
double
PV_H(void)
{
double PVT1,PVT2,PVT3,PVT4,PVT5;
double PVTD;
int PVTC;
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
//while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX000[ulindex]);
//while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX000[ulindex]);//spi配置ADS1248 00寄存器 正端选择AIN4 负端选择AIN5
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
for(ulindex = 0; ulindex < 3; ulindex++)
{
//
// 通过串口1显示打印发送的数据
//
while(UARTBusy(UART1_BASE));
//UARTCharPut(UART1_BASE,SSI_TX00B[ulindex]);
// while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE, SSI_TX00B[ulindex]);//spi配置ADS1248 0B寄存器 电流源1流过AIN4 ,电流源2流过AIN5
}
while(SSIBusy(SSI0_BASE));//SSI0发送忙,等待
SSIDataPut(SSI0_BASE,RDATA);//spi读数据指令,每发送一个读一组数据
for(ulindex = 0; ulindex <3; ulindex++)
{
//
// Receive the data using the "blocking" Get function. This function
// will wait until there is data in the receive FIFO before returning.
//
SSIDataGet(SSI0_BASE, &UART_RX[ulindex]);
//
// Since we are using 8-bit data, mask off the MSB.
//
UART_RX[ulindex] &= 0x00FF;
//
// 通过串口显示SSI0接收到的数据
//
while(UARTBusy(UART1_BASE));
UARTCharPut(UART1_BASE,UART_RX[ulindex]);
}
系统时钟为50MHZ