工具与软件:
您好!
我正在尝试读取 ADC 的器件 ID、微控制器的代码如下:
accelerometerCmdBuf[0]= 0xC9;
accelerometerCmdBuf[1]= 0x00;
accelerometerCmdBuf[2]= 0x00;
accelerometerCmdBuf[3]= 0x00;
SPI_CHD_CS_CLEAR ();
SPI_CHD_CS_SET ();
CORETIME_DELAYN (500);
SPI_CHD_CS_CLEAR ();
CORETIME_DELAYN (20);
SPI4_WriteRead (&accelerometerCmdBuf[0]、4*sizeof (UINT8)、&accelerometerDataBuf[0]、4*sizeof (UINT8));
SPI_CHD_CS_SET ();
snprintf (uartBuffer、sizeof (uartBuffer)、"器件 ID:%02x %02x %02x %02x\r\n"、accelerometerDataBuf[0]、accelerometerDataBuf[1]、accelerometerDataBuf[2]、accelerometerDataBuf[3]);
上述代码的输出如下所示:
器件 ID:01 00 00
器件 ID:F6 00 00
器件 ID:00 00 00
器件 ID:05 00 00 00
这些是我 多次收到器件 ID 01 00 00 00时随机收到的值。
除此之外、我已经尝试将 ADC 配置为+/- 1.25V 外部基准、相关代码如下:
accelerometerCmdBuf[0]= 0xD0;
accelerometerCmdBuf[1]= 0x14;
accelerometerCmdBuf[2]= 0x00;
accelerometerCmdBuf[3]= 0x43;
SPI_CHD_CS_CLEAR ();
SPI_CHD_CS_SET ();
CORETIME_DELAYN (500);
SPI_CHD_CS_CLEAR ();
CORETIME_DELAYN (20);
SPI4_Write (&accelerometerCmdBuf[0]、4* sizeof (uint8));
SPI_CHD_CS_SET ();
有没有什么我可以验证它是否已成功配置?
我还尝试将 Data_VAL 设置为固定模式、代码如下:
accelerometerCmdBuf[0]= 0xD0;
accelerometerCmdBuf[1]= 0x10;
accelerometerCmdBuf[2]= 0x00;
accelerometerCmdBuf[3]= 0x06;
SPI_CHD_CS_CLEAR ();
SPI_CHD_CS_SET ();
CORETIME_DELAYN (500);
SPI_CHD_CS_CLEAR ();
CORETIME_DELAYN (20);
SPI4_Write (&accelerometerCmdBuf[0]、4* sizeof (uint8));
SPI_CHD_CS_SET ();
accelerometerCmdBuf[0]= 0x00;
accelerometerCmdBuf[1]= 0x00;
accelerometerCmdBuf[2]= 0x00;
accelerometerCmdBuf[3]= 0x00;
SPI_CHD_CS_CLEAR ();
SPI_CHD_CS_SET ();
CORETIME_DELAYN (500);
SPI_CHD_CS_CLEAR ();
CORETIME_DELAYN (20);
SPI4_WriteRead (&accelerometerCmdBuf[0]、4*sizeof (UINT8)、&accelerometerDataBuf、4*sizeof (UINT8));
SPI_CHD_CS_SET ();
snprintf (uartBuffer、sizeof (uartBuffer)、"Data_VAL :%02x %02x %02x %02x\r\n"、accelerometerDataBuf[0]、accelerometerDataBuf[1]、accelerometerDataBuf[2]、accelerometerDataBuf[3]);
在固定图形的输出下:
DATA_VAL:00 00 00
DATA_VAL:0f FF FF FF
虽然它不会交替的0和1的,它是随机发生这是预期?
以下是我的 SPI 配置:
#define SPI4_CON_MSTEN (1 <<_SPI4CON_MSTEN_POSITION)
#define SPI4_CON_CKP (0 <<_SPI4CON_CKP_POSITION)
#define SPI4_CON_CKE (0 <<_SPI4CON_CKE_POSITION)
#define SPI4_CON_MODE_32_MODE_16 (0 <<_SPI4CON_MODE16_POSITION)
#define SPI4_CON_ENHBUF (1 <<_SPI4CON_ENHBUF_POSITION)
#define SPI4_CON_MCLKSEL (0 <<_SPI4CON_MCLKSEL_POSITION)
#define SPI4_CON_MSSEN (0 <<_SPI4CON_MSSEN_POSITION)
#define SPI4_CON_SMP (1 <<_SPI4CON_SMP_POSITION)
请让我知道我错了哪里,希望能迅速作出回应。
此致、
法哈德。