大家好!
这是我第一次进入除Arduino基础知识之外的嵌入式设备世界,我期待向大家学习。 我目前在CCS中有一个脚本,它从ADS1248模数转换器上的15个寄存器中读取。 我不确定如何解释通过SPI接收的数据,因为每次循环中的数据似乎都随机变化。 是否有人会介意查看我的代码并让我知道我是否做得正确? 下面是我的循环:
void main() ^^^^ init stuff (clk,board,UART,pinmux等 //重置SPI外设 map_PRCMPeripheralReset(PRCM_GSPI); //在ADS1248 (WFP 1.10 -> P4) 上提取重置引脚MAP_GPIOPinWrite(GPIOA1_base, 0x08, 0xFF); //提取1.9 起始引脚(< int i; unsigned long ul_ADCRawData; 未签名的长ADCReadData; //重置SPI MAP_SPIReset (GSPI_BASE); UtilsDelay(64万); //配置SPI接口 MAP_SPIConfigSetExpClk (GSPI_BASE,MAP_PRCMPeripheralClockGet (PRCM_GSPI), SPI_IF_bit_rate,SPI_MODE_MASTER,SPI_SUP_MODE_1, (SPI_SW_CTRL_CS | SPI_4pin_mode | SPI_TURBO关闭| SPI_CS_ACTIVELOW | SPI_WL_8); //启用SPI通信 MAP_SPIEnable(GSPI_base);
//生成命令(0x20= RReg,从Reg 0开始,0x0E =14)<---用于测试的硬编码
UINT8_t command_a =(0x20 | 0x00);
uINT8_t command_b =(0x0E);
而(1){
MAP_SPICSDisable(GSPI_base);
MAP_SPICSEnable(GSPI_base);
//发送第一个命令字节
MAP_SPIDataPut(GSPI_base, command_a);
//阅读以清除
MAP_SPIDataGet (GSPI_BASE,&UL_ADCRawData);
//发送第二个命令字节
MAP_SPIDataPut(GSPI_base, command_b);
//阅读以清除
MAP_SPIDataGet (GSPI_BASE,&UL_ADCRawData);
//发送NOP以读取15个寄存器
对于(i=0;i<16;i++){
MAP_SPIDataPut(GSPI_BASE,ADS_NOP);
MAP_SPIDataGet (GSPI_BASE,&UL_ADCRawData);
ADCReadData =(uint8_t)ul_ADCRawData;
报告("注册[%i]:%x \n\n\r",i,ADCReadData);
UtilsDelay(100万);
}
}
MAP_SPICSDisable(GSPI_base);
}
下面是我的一些示例输出:
已接收:0 寄存器[0]: AA 寄存器[1]: 1 注册[2]: 0 寄存器[3]: 27 注册[4]: 0 寄存器[5]: 0 寄存器[6]: 50 注册[7]: 0 寄存器[8]: 80 注册[9]: 52 登记册[10]: 40 注册[11]: 17 注册[12]: FF 寄存器[13]: 0 寄存器[14]: 22 已接收:0 寄存器[0]: 43 注册[1]: 1 注册[2]: 0 寄存器[3]: 0 寄存器[4]: 19 登记册[5]: 0 寄存器[6]: 1B 寄存器[7]: 0 寄存器[8]: 80 注册[9]: 1F 注册[10]: 40 注册[11]: 90 寄存器[12]: 43 登记册[13]: 0 寄存器[14]: 49 已接收:0 寄存器[0]: 13 注册[1]: 1 注册[2]: 0 寄存器[3]: 4D 寄存器[4]: 0 寄存器[5]: 46 登记册[6]: 0 寄存器[7]: 0 寄存器[8]: 3B 登记册[9]: D 寄存器[10]: 40 注册[11]: 2A 寄存器[12]: FF 寄存器[13]: 2B 寄存器[14]: 0
我是不是这样做? 很难解释这些数据,我不确定是垃圾,错误代码,还是应该这样更改! 如果有任何指导,我们将不胜感激!
非常恭敬,
詹姆斯
