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.

[参考译文] ADS1298:ADS1298读取寄存器

Guru**** 1123190 points
Other Parts Discussed in Thread: ADS1298
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1266102/ads1298-ads1298-reading-register

器件型号:ADS1298

您好!

我正在通过 SPI 通信从 ADS1298 AFE 的寄存器读取和写入。 我的大师是 STM32F411CEU6。 我能够写入寄存器、但无法从寄存器读取。

我正在读取的寄存器是 ID 控制寄存器(地址:00h)。 我发送的操作码是  

uint8_t opcode1 = 0x20;//表示地址

uint8_t opcode2 = 0x00;//寄存器-1

在发送操作码之前、我要将其设置为 SDATAC。 但仍然没有显示正确的值(应该为0x02、因为我使用的是1298)。 我得到的值为0x49。

下面给出了完整代码

while (1)

{

/*用户代码结束时间*/

/*用户代码开始3 */

uint8_t sdatac = 0x11;//待发送的数据

uint8_t opcode1 = 0x20;//要发送的数据

uint8_t opcode2 = 0x00;//要发送的数据

uint8_t rxData;

// SDATAC 配置

HAL_GPIO_WritePin (GPIOA、GPIO_PIN_4、GPIO_PIN_RESET);// CS 低电平

HAL_DELAY (10);

HAL_SPI_TRANSMIT (&hspi1、&sdatac、1、HAL_MAX_DELAY);//发送数据

HAL_DELAY (10);

HAL_GPIO_WritePin (GPIOA、GPIO_PIN_4、GPIO_PIN_SET);// CS 高电平

HAL_DELAY (100);

//////// SDATAC 配置完成//////////////

//从00h 寄存器读取

HAL_GPIO_WritePin (GPIOA、GPIO_PIN_4、GPIO_PIN_RESET);// CS 低电平

HAL_DELAY (10);

HAL_SPI_TRANSMIT (&hspi1、&opcode1、1、HAL_MAX_DELAY);//发送数据

HAL_DELAY (4);

HAL_SPI_TRANSMIT (&hspi1、&opcode2、1、HAL_MAX_DELAY);//发送数据

HAL_DELAY (100);

HAL_SPI_RECEIVE (&hspi1、&rxData、1、HAL_MAX_DELAY);//接收数据

HAL_DELAY (10);

HAL_GPIO_WritePin (GPIOA、GPIO_PIN_4、GPIO_PIN_SET);// CS 高电平

if (rxData == 0x02)

{

HAL_GPIO_WritePin (GPIOB、GPIO_PIN_4、GPIO_PIN_SET);// CS 低电平

////// 结尾处为////////////////

HAL_DELAY (1000);