DAC有输出电压
This commit is contained in:
parent
44ac1747c0
commit
7271283f9e
|
@ -726,9 +726,9 @@ void start_dac8568_test_task(void const *argument)
|
|||
//DAC8568_WriteAndUpdate(CHANNEL_B, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_C, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_D, (uint16_t)i);
|
||||
DAC8568_WriteAndUpdate(CHANNEL_E, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_E, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_F, (uint16_t)i);
|
||||
DAC8568_WriteAndUpdate(CHANNEL_G, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_G, (uint16_t)i);
|
||||
//DAC8568_WriteAndUpdate(CHANNEL_H, (uint16_t)i);
|
||||
|
||||
|
||||
|
@ -742,7 +742,7 @@ void start_dac8568_test_task(void const *argument)
|
|||
// float voltage = 2.5f * 2.0f * i / 65536.0f;
|
||||
|
||||
// 延时2秒
|
||||
osDelay(2000);
|
||||
osDelay(1000);
|
||||
//}
|
||||
}
|
||||
}
|
|
@ -729,39 +729,66 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf *
|
|||
uint16_t dac_value;
|
||||
uint16_t dac161s_value;
|
||||
uint16_t digital_value;
|
||||
float voltage;
|
||||
uint32_t dac_out;
|
||||
const float SCALE_FACTOR = 1000.0f; // 新的比例系数,输入值除以1000得到实际电压值
|
||||
|
||||
// 处理DAC8568的8个通道输出
|
||||
// 通道A (CH0)
|
||||
dac_value = (tcp_rx_data[9] << 8) | tcp_rx_data[10];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_A, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR; // 转换为实际电压值
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f); // 2.5V参考电压
|
||||
if(dac_out > 65535) dac_out = 65535; // 限制最大值
|
||||
DAC8568_WriteAndUpdate(CHANNEL_A, (uint16_t)dac_out);
|
||||
|
||||
// 通道B (CH4)
|
||||
dac_value = (tcp_rx_data[11] << 8) | tcp_rx_data[12];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_B, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_B, (uint16_t)dac_out);
|
||||
|
||||
// 通道C (CH1)
|
||||
dac_value = (tcp_rx_data[13] << 8) | tcp_rx_data[14];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_C, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_C, (uint16_t)dac_out);
|
||||
|
||||
// 通道D (CH5)
|
||||
dac_value = (tcp_rx_data[15] << 8) | tcp_rx_data[16];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_D, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_D, (uint16_t)dac_out);
|
||||
|
||||
// 通道E (CH2)
|
||||
dac_value = (tcp_rx_data[17] << 8) | tcp_rx_data[18];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_E, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_E, (uint16_t)dac_out);
|
||||
|
||||
// 通道F (CH6)
|
||||
dac_value = (tcp_rx_data[19] << 8) | tcp_rx_data[20];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_F, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_F, (uint16_t)dac_out);
|
||||
|
||||
// 通道G (CH3)
|
||||
dac_value = (tcp_rx_data[21] << 8) | tcp_rx_data[22];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_G, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_G, (uint16_t)dac_out);
|
||||
|
||||
// 通道H (CH7)
|
||||
dac_value = (tcp_rx_data[23] << 8) | tcp_rx_data[24];
|
||||
DAC8568_WriteAndUpdate(CHANNEL_H, dac_value);
|
||||
voltage = dac_value / SCALE_FACTOR;
|
||||
dac_out = (uint32_t)((voltage / 2.5f) * 65535.0f);
|
||||
if(dac_out > 65535) dac_out = 65535;
|
||||
DAC8568_WriteAndUpdate(CHANNEL_H, (uint16_t)dac_out);
|
||||
|
||||
//HART电流输出
|
||||
dac161s_value = (tcp_rx_data[25] << 8) | tcp_rx_data[26];
|
||||
|
@ -774,9 +801,9 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf *
|
|||
//tcp_rx_data[30]
|
||||
|
||||
// 数字量输出刷新第一个芯片的输出状态
|
||||
TCA6416_WritePort(0, tcp_rx_data[31]); // 直接写入Port0的值8-15
|
||||
TCA6416_WritePort(0, tcp_rx_data[27]); // 直接写入Port0的值8-15
|
||||
osDelay(10);
|
||||
TCA6416_WritePort(1, tcp_rx_data[32]); // 写入Port1的值0-7
|
||||
TCA6416_WritePort(1, tcp_rx_data[28]); // 写入Port1的值0-7
|
||||
osDelay(10);
|
||||
|
||||
// 保存设置的数据到adc_set_data数组
|
||||
|
|
Loading…
Reference in New Issue