存档:

ADS1220,MISO低电平为1.65V
This commit is contained in:
吴俊潮 2025-07-25 17:08:38 +08:00
parent 2de39a3a96
commit d715fad4de
7 changed files with 25021 additions and 21691 deletions

View File

@ -44,7 +44,8 @@
"modbus_register_process.h": "c", "modbus_register_process.h": "c",
"modbus_rtu_master.h": "c", "modbus_rtu_master.h": "c",
"dac7811.h": "c", "dac7811.h": "c",
"sig24130.h": "c" "sig24130.h": "c",
"array": "c"
}, },
"C_Cpp.errorSquiggles": "disabled", "C_Cpp.errorSquiggles": "disabled",
"idf.pythonInstallPath": "F:\\Espressif\\tools\\idf-python\\3.11.2\\python.exe", "idf.pythonInstallPath": "F:\\Espressif\\tools\\idf-python\\3.11.2\\python.exe",

View File

@ -40,24 +40,25 @@ static void ads1220_cs(cs_state_type state)
static void fun_ads1220_spi1_init(void) static void fun_ads1220_spi1_init(void)
{ {
hspi1.Instance = SPI1; // hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER; // hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES; // hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT; // hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; // hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; // hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT; // hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; // hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; // hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE; // hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; // hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 10; // hspi1.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi1) != HAL_OK) // if (HAL_SPI_Init(&hspi1) != HAL_OK)
{ // {
Error_Handler(); // Error_Handler();
} // }
MX_SPI1_Init();
ADS1220_CS(GPIO_PIN_RESET); ADS1220_CS(GPIO_PIN_RESET);
//DAC7811_CS(GPIO_PIN_SET); DAC7811_CS(GPIO_PIN_SET);
} }
// static void spi_write_byte(uint8_t data) // static void spi_write_byte(uint8_t data)
@ -255,22 +256,34 @@ static void ads1220_start(void)
// uint8_t cmd = ADS1220_POWERDOWN_CMD; // uint8_t cmd = ADS1220_POWERDOWN_CMD;
// spi_write_read(&cmd, RcvData, 1); // spi_write_read(&cmd, RcvData, 1);
//} //}
uint8_t in_data_1220[3] = {0};
int data_1220_raw = 0;
long data_1220 = 0;
static void ads1220_get_conversion_data(float32 *conversionData) static void ads1220_get_conversion_data(float32 *conversionData)
{ {
uint8_t out_data[3] = {0xff, 0xff, 0xff}; uint8_t out_data[3] = {0xff, 0xff, 0xff};
uint8_t in_data[3] = {0}; // uint8_t in_data[3] = {0};
long data = 0; // long data = 0;
spi_write_read(out_data, in_data, 3); // spi_write_read(out_data, in_data, 3);
data = (((long)in_data[0] << 16) + ((long)in_data[1] << 8) + (long)in_data[2]); // data = (((long)in_data[0] << 16) + ((long)in_data[1] << 8) + (long)in_data[2]);
if (data & 0x800000) // if (data & 0x800000)
// {
// data ^= 0x00FFFFFF;
// data += 1;
// }
spi_write_read(out_data, in_data_1220, 3);
data_1220_raw = data_1220;
data_1220 = (((long)in_data_1220[0] << 16) + ((long)in_data_1220[1] << 8) + (long)in_data_1220[2]);
if (data_1220 & 0x800000)
{ {
data ^= 0x00FFFFFF; data_1220 ^= 0x00FFFFFF;
data += 1; data_1220 += 1;
} }
//mv //mv
*conversionData = 1000 * (float32)data * 2.5f / 8388608; *conversionData = 1000 * (float32)data_1220 * 2.5f / 8388608;
} }
//static void ads1220_get_rtd_conversion_data_calibrated(volatile long *code) //static void ads1220_get_rtd_conversion_data_calibrated(volatile long *code)
@ -299,7 +312,8 @@ void ads1220_operation(uint8_t channel, float32 *data_pv)
} }
ads1220_cs(CS_L); ads1220_cs(CS_L);
vTaskDelay(10); //vTaskDelay(10);
HAL_Delay(10);
// if (channel == CH2_OUT_CUR) // if (channel == CH2_OUT_CUR)
// { // {
// ads1220_reset(); // ads1220_reset();
@ -324,24 +338,28 @@ void ads1220_operation(uint8_t channel, float32 *data_pv)
// else if (channel == CH10_IN_TC) // else if (channel == CH10_IN_TC)
// { // {
ads1220_reset(); ads1220_reset();
vTaskDelay(5); HAL_Delay(5);
//vTaskDelay(5);
setup_ads1220( setup_ads1220(
ADS1220_MUX_AIN0_AIN1, // 输入多路复用器配置 ADS1220_MUX_AIN0_AIN1, // 输入多路复用器配置
ADS1220_OP_MODE_NORMAL, // 工作模式选择 ADS1220_OP_MODE_NORMAL, // 工作模式选择
ADS1220_CONVERSION_SINGLE_SHOT, // 转换模式* ADS1220_CONVERSION_SINGLE_SHOT, // 转换模式*
ADS1220_DATA_RATE_45SPS, // 数据速率* ADS1220_DATA_RATE_45SPS, // 数据速率*
ADS1220_GAIN_1, // 增益配置* ADS1220_GAIN_8, // 增益配置*
ADS1220_PGA_BYPASS, // 禁止/启用可编程增益放大器 ADS1220_PGA_BYPASS, // 禁止/启用可编程增益放大器
ADS1220_IDAC1_DISABLED, // 选择IDAC1将路由到的通道 ADS1220_IDAC1_DISABLED, // 选择IDAC1将路由到的通道
ADS1220_IDAC2_DISABLED, // 选择IDAC2将路由到的通道 ADS1220_IDAC2_DISABLED, // 选择IDAC2将路由到的通道
ADS1220_IDAC_CURRENT_OFF, // IDAC电流设置 ADS1220_IDAC_CURRENT_OFF, // IDAC电流设置
ADS1220_VREF_EXT_REF0_PINS, // 基准电压选择* ADS1220_VREF_EXT_REF0_PINS, // 基准电压选择*
ADS1220_TEMP_SENSOR_OFF); // 温度传感器 ADS1220_TEMP_SENSOR_OFF); // 温度传感器
vTaskDelay(5); //vTaskDelay(5);
HAL_Delay(5);
ads1220_start(); ads1220_start();
vTaskDelay(30); HAL_Delay(30);
//vTaskDelay(30);
ads1220_get_conversion_data(data_pv); ads1220_get_conversion_data(data_pv);
// } // }
ads1220_cs(CS_H); ads1220_cs(CS_H);
vTaskDelay(5); //vTaskDelay(5);
HAL_Delay(5);
} }

View File

@ -166,7 +166,7 @@ extern "C" {
#define ADS1220_CS(CS) HAL_GPIO_WritePin(ADS1220_CS_GPIO_Port, ADS1220_CS_Pin, CS) #define ADS1220_CS(CS) HAL_GPIO_WritePin(ADS1220_CS_GPIO_Port, ADS1220_CS_Pin, CS)
//#define DAC7811_CS(CS) HAL_GPIO_WritePin(DAC7811_CS_GPIO_Port, DAC7811_CS_Pin, CS) #define DAC7811_CS(CS) HAL_GPIO_WritePin(DAC7811_SYNC_GPIO_Port, DAC7811_SYNC_Pin, CS)
/* USER CODE END Private defines */ /* USER CODE END Private defines */

View File

@ -270,6 +270,31 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>cali_paras</ItemText> <ItemText>cali_paras</ItemText>
</Ww> </Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>in_data_1220</ItemText>
</Ww>
<Ww>
<count>24</count>
<WinNumber>1</WinNumber>
<ItemText>data_1220_raw</ItemText>
</Ww>
<Ww>
<count>25</count>
<WinNumber>1</WinNumber>
<ItemText>data_1220</ItemText>
</Ww>
<Ww>
<count>26</count>
<WinNumber>1</WinNumber>
<ItemText>ads1220spi_status_watch</ItemText>
</Ww>
<Ww>
<count>27</count>
<WinNumber>1</WinNumber>
<ItemText>RcvData</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<WatchWindow2> <WatchWindow2>
<Ww> <Ww>
@ -292,7 +317,7 @@
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>1</periodic>
<aLwin>1</aLwin> <aLwin>0</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>0</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>

View File

@ -315,7 +315,7 @@
</ArmAdsMisc> </ArmAdsMisc>
<Cads> <Cads>
<interw>1</interw> <interw>1</interw>
<Optim>3</Optim> <Optim>1</Optim>
<oTime>1</oTime> <oTime>1</oTime>
<SplitLS>0</SplitLS> <SplitLS>0</SplitLS>
<OneElfS>1</OneElfS> <OneElfS>1</OneElfS>

File diff suppressed because it is too large Load Diff

View File

@ -659,7 +659,8 @@ SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
SPI1.CLKPhase=SPI_PHASE_2EDGE SPI1.CLKPhase=SPI_PHASE_2EDGE
SPI1.CalculateBaudRate=648.0 KBits/s SPI1.CalculateBaudRate=648.0 KBits/s
SPI1.Direction=SPI_DIRECTION_2LINES SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,CLKPhase,BaudRatePrescaler SPI1.FirstBit=SPI_FIRSTBIT_MSB
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,CLKPhase,BaudRatePrescaler,FirstBit
SPI1.Mode=SPI_MODE_MASTER SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualType=VM_MASTER SPI1.VirtualType=VM_MASTER
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32 SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32