大家好、支持团队
我的客户有以下问题:
我在硬件中生产了 ADS7038产品、并正在测试固件。
我们目前正在进行 SPI 测试、但我们不知道接收到的数据是否准确。 它的设计参考了 TI 提供的 C 代码。
使用了 STM32f103 MCU、硬件设置为8位、MSB 优先、波特率为4.5Mbit/s、时钟极性(CPOL)低电平和时钟相位(CPHA) 1边沿。
读取 SYSTEM_STATUS 寄存器后接收到的数据为0x84。 在50ms 延迟后、读取 DATA_CFG 寄存器后接收到的数据为0x84、因此其输出与上述寄存器值相同。
请帮帮我。
我的程序如下。
tCmd[0]= 0x10;
tCmd[1]= 0x00;
tCmd[2]= 0x00;
_HAL_SPI_ENABLE (hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_RESET);
while (HAL_SPI_GetState (&hspi1)=HAL_SPI_State_Busy_TX);
SPI_State = HAL_SPI_transmit (&hspi1、&tCmd[0]、3、5);
HAL_DMA_STATE_CHANGE (&hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_SET);
dwt_delay_us (10000);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_RESET);
while (HAL_SPI_GetState (&hspi1)=HAL_SPI_State_Busy_RX);
SPI_State = HAL_SPI_Receive (&hspi1、&adcResp[0]、3、5);
HAL_DMA_STATE_CHANGE (&hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_SET);
dwt_delay_us (50000);
tCmd[0]= 0x10;
tCmd[1]= 0x02;
tCmd[2]= 0x00;
_HAL_SPI_ENABLE (hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_RESET);
while (HAL_SPI_GetState (&hspi1)=HAL_SPI_State_Busy_TX);
SPI_State = HAL_SPI_transmit (&hspi1、&tCmd[0]、3、5);
HAL_DMA_STATE_CHANGE (&hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_SET);
dwt_delay_us (10000);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_RESET);
while (HAL_SPI_GetState (&hspi1)=HAL_SPI_State_Busy_RX);
SPI_State = HAL_SPI_Receive (&hspi1、&adcResp[3]、3、5);
HAL_DMA_STATE_CHANGE (&hspi1);
HAL_GPIO_WritePin (GPIOA、SPI1_CS_Pin、GPIO_PIN_SET);
dwt_delay_us (50000);
非常感谢。
此致、
Yuki