1.对SCLK,CS,MOSI (DIN)的波形进行数据传输验证。
2.由于ADS1148-Q1的所有ADC输入通道也可用作GPIO,因此将AIN7引脚配置为GPIO。 CAN能够打开/关闭通过程序连接到引脚AIN7的LED。
3.代码与数据表中给出的伪代码相同。
4.无法获取DOUT引脚上的数据,原因可能是什么? 请帮我解决这个问题,提前感谢。
我的代码如下所示:
内部主(无效)
{
UINT8_t高位字节;
uINT8_t low_byte;
UINT16_t ADC_DATA;
UINT8_t DATA_READY;
UINT8_t received_val = 0;
INIT_USART1 (9600);
gPIO_CONFIG();
//将低重置为高
GPIO_ResetBits (GPIOC,GPIO针脚12);//重置为低
delay_ms(10);
GPIO_SetBits (GPIOC,GPIO针脚_12); //重置为高
/****************** 步骤*************************** /
delay_ms(16);
INIT_SPI1();//SPI 初始化
GPIOE->BSRRH |= GPIO引脚_7;//设置PE7 (CS)低
delay_ms(16); // tcssc*/的最小延迟
SPI1_SEND (0x06); //reset命令
delay_ms(1);
SPI1_SEND (0x16); //SDATAC命令
SPI1_SEND (0x40);
SPI1_SEND (0x0E);
SPI1_SEND (0x01); //MUX0
SPI1_SEND (0x00); //VBIAS
SPI1_SEND (0x30); //MUX1
SPI1_SEND (0x52); //SYS0
SPI1_SEND (0x00); //OFC0
SPI1_SEND (0x00); //OFC1
SPI1_SEND (0x00); //OFC2
SPI1_SEND (0x00); //FSC0
SPI1_SEND (0x00); //FSC1
SPI1_SEND (0x00); //FSC2
SPI1_SEND (0x06); //IDAC0
SPI1_SEND (0x89); //IDAC1
SPI1_SEND (0x80); //GPIOCFG
SPI1_SEND(0x00); //GPIODIR
SPI1_SEND (0x80); //GPIODAT
GPIOE->BSRRL |= GPIO引脚_7; //设置PE7 (CS)高
DELAY _Us (10);
//读取所有寄存器
GPIOE->BSRRH |= GPIO引脚_7; //设置PE7 (CS)低
SPI1_SEND (0x20); //从地址0开始读取
SPI1_SEND (0x0E); //读取0xE + 1 = 15字节
UINT8_t MUX0 = SPI1_SEND (0xFF); //读取MUX0
UINT8_t VBIAS = SPI1_SEND (0xFF);
UINT8_t MUX1 = SPI1_SEND (0xFF);
UINT8_t SYS0 = SPI1_SEND (0xFF);
UINT8_t OFC0 = SPI1_SEND (0xFF);
UINT8_t OFC1 = SPI1_SEND (0xFF);
UINT8_t OFC2 = SPI1_SEND (0xFF);
UINT8_t FSC0 = SPI1_SEND (0xFF);
UINT8_t FSC1 = SPI1_SEND (0xFF);
UINT8_t FSC2 = SPI1_SEND (0xFF);
UINT8_t IDAC0 = SPI1_SEND(0xFF);
UINT8_t IDAC1 = SPI1_SEND (0xFF);
UINT8_t GPIOCFG = SPI1_SEND (0xFF);
UINT8_t GPIODIR = SPI1_SEND (0xFF);
UINT8_t GPIODAT = SPI1_SEND (0xFF);
GPIOE->BSRRL |= GPIO引脚_7; //设置PE7 (CS)高
GPIOE->BSRRH |= GPIO引脚_7; //设置PE7 (CS)低
SPI1_SEND (0x04); //sync命令
DELAY _Us (10); //延迟> tsccs
//GPIO_ResetBits (GPIOC,GPIO引脚_12); //重置高
//delay_ms(10);
同时(1)
{
GPIO_SetBits (GPIOE,GPIO引脚_14); //起始值为高
delay_ms(10);
GPIO _ResetBits (GPIOE,GPIO引脚_14); //启动低
DATA_READY = 0x01;
delay_ms(1);
while (data_ready == 0x01)
{
DATA_READY = GPIO_ReadInputDataBit(GPIOE,GPIO PIN_11);
}
GPIOE->BSRRH |= GPIO引脚_7; //设置PE7 (CS)低
delay_ms(7);
SPI1_SEND (0x12); //RDATA命令
//delay_ms(1);
HIGH _BYTE = SPI1_SEND (0xFF);
low_byte = SPI1_send (0xFF);
/*SPI1_SEND(0xFF);
HIGH _BYTE=SPI_I2S_ReceiveData (SPI1);
SPI1_SEND (0xFF);
low_byte=SPI_I2S_ReceiveData(SPI1);*/
delay_ms(20);
GPIOE->BSRRL |= GPIO引脚_7; //设置PE7 (CS)高
ADC_DATA =(((uint16_t) HIGH _Byte)< 8)|((uint16_t) LOW)_Byte);
USART_SendData (USART1,ADC_DATA);
}
同时(1);
返回0;
}