你(们)好。
我已经在尝试使用多路复用器运行该 ADS1259。 到目前为止、我无法通过使用不同的多路复用器使其运行。 就我只使用一个多路复用器和其他多路复用器上的相同数据而言、它可以正常工作。 在多路复用器使用不同的位置后、它不会。 可以帮我找到问题吗?
在下面、您可以看到我使用的代码:
void init_adw_24bit_SPI (SPI_HandleTypeDef * hspi1){
uint8_t SPI_Rx[11]={0x0};
uint8_t SPI_TX[11]={0x0};
SPI_TX[0]= 0x06;//复位
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、1、1);
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_DELAY (1);
SPI_TX[0]= 0x11;//停止连续读取数据模式
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、1、1);
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_DELAY (1);
///----------------------
//配置 ADS 寄存器设置:---
///----------------------
// SPI_TX[2] CONFIG0:0101 ->启用 SPI 超时、启用内部基准偏置
// SPI_TX[3] CONFIG1:0011 -> sinc^1滤波器、延迟256 tclk
// SPI_TX[4] CONFIG2:10110 --> 3600SPS,脉冲控制模式
SPI_TX[0]= 0x40;SPI_TX[1]= 0x08;SPI_TX[2]= 0x05;SPI_TX[3]= 0x03;SPI_TX[4]= 0x16; SPI_TX[5]= 0x00;SPI_TX[6]= 0x00;SPI_TX[7]= 0x00;SPI_TX[8]= 0x00;SPI_TX[9]= 0x00; SPI_TX[10]= 0x40;
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、11、1);
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_DELAY (1);
SPI_TX[0]= 0x20;SPI_TX[1]= 0x08;//读取所有配置寄存器
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、11、1);
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_DELAY (1);
//SPI_TX[0]= 0x10;//连续读取数据模式
SPI_TX[0]= 0x12;//通过操作码读取数据配置
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、1、1);
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_DELAY (1);
}
void read_ad_24bit (SPI_HandleTypeDef * hspi1、int32_t * temp、int32_t * offset、int32_t * offset_w){
静态 int 计数器= 0;
静态 int CHANNAL=0;
DEBUG_AD24RAW = READ_ADW_24bit_SPI (hspi1);
temp[通道]=...
通道++;
IF (通道>= RTD_ANZAHL)
{
Kanal = 0;
//过滤器
COUNTER++;
如果(计数器> 49) 计数器= 0;
}
SET_CH_MUX1 (计数器);
}
uint32_t read_adw_24bit_SPI (SPI_HandleTypeDef * hspi1){
uint32_t temp = 0;
uint8_t SPI_Rx[4]={0};
uint8_t SPI_TX[4]={0x12、0x00、0x00、0x00};
LL_GPIO_ResetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
HAL_SPI_TransmitReceive (hspi1、SPI_TX、SPI_Rx、4、1); // 读取活动数据,然后读取
LL_GPIO_SetOutputPin (CS_AD2_GPIO_Port、CS_AD2_Pin);
///----------------------------
//数据更改
temp=..........
///----------------------------
返回温度;
}
提前感谢、希望我们能在代码中发现一些故障!