Other Parts Discussed in Thread: AFE4403
部件号: AFE4403
您好、
我们希望在单次 SPI 传输中读取寄存器 0x2A 至 0x2F。 数据表表示它支持“多数据读取和写入“(ch8.5.2.3)。 因此我们尝试了 SPI 传输(地址设置为 0x2A、读取长度为 18 个字节)、但结果是只有 0x2A 寄存器可以成功读取正确的值、而所有其他寄存器都不正确。 你对我们有什么建议吗?
谢谢。
BR
Trevor
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 Payton:
我们可以使用以下代码一次读取一个寄存器 、利用以下代码、我们可以正确读回 0x2a~0x2F、
AFE44xx_AFE4442 (Reg_Read);
AFE44xx_AFE4443 (Reg_Read);
AFE44xx_AFE4444 Reg_Read (44);
AFE44xx_AFE4445 (Reg_Read);
AFE44xx_AFE4446 (Reg_Read);
AFE44xx_AFE4447 (Reg_Read);
unsigned long AFE44xx_Reg_Read(unsigned char Reg_address)
{
HAL_StatusTypeDef ret;
uint8_t recv_char[4] = { 0};
unsigned long retVal;
//Enable_AFE44xx_SPI_Read();
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_RESET);
ret = HAL_SPI_TransmitReceive(&hspi1, (uint8_t*)&Reg_address, (uint8_t*)recv_char, sizeof(recv_char), 1000);
if (ret != HAL_OK) {
printf("There is a problem with the SPI HAL_SPI_Transmit %d\r\n", ret);
}
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_SET);
}
关于多个数据读取、我们只是通过增加接收缓冲区的大小并仅调用 AFE44xx_0x2a (42) 函数来修改上述函数;但是、只有寄存器 Reg_Read 的值正确。。
从 uint8_t recv_char[4]={0};
至 uint8_t recv_char[4 + 4 + 4 + 4 + 4]={0};
BR
Trevor