// AD5754寄存器定义 #define AD5754_DAC_REG 0x00 // DAC数据寄存器 #define AD5754_RANGE_REG 0x01 // 输出范围寄存器 #define AD5754_POWER_REG 0x02 // 电源控制寄存器 #define AD5754_CTRL_REG 0x03 // 控制寄存器 // 通道地址定义 #define AD5754_CH1 0x00 #define AD5754_CH2 0x01 #define AD5754_CH3 0x02 #define AD5754_CH4 0x03 #define AD5754_ALL_CH 0x04 // 设置单通道输出 void set_channel_output(uint8_t channel, uint16_t dac_code) { uint32_t spi_data = 0; // 构造24位SPI数据包 spi_data = (0 << 23) | // 写操作 (channel << 19) | // 通道地址 (AD5754_DAC_REG << 16) | // 寄存器地址 dac_code; // 16位DAC数据 CS_LOW(); spi_transmit_24bit(spi_data); CS_HIGH(); } // 四通道同步输出 void set_all_channels_sync(uint16_t ch1, uint16_t ch2, uint16_t ch3, uint16_t ch4) { // 依次写入各通道数据(暂不更新输出) set_channel_output(AD5754_CH1, ch1); set_channel_output(AD5754_CH2, ch2); set_channel_output(AD5754_CH3, ch3); set_channel_output(AD5754_CH4, ch4); // 同步更新所有通道输出 LDAC_PULSE(); } // 配置输出范围 void config_output_range(uint8_t channel, uint8_t range) { uint32_t spi_data = 0; spi_data = (0 << 23) | // 写操作 (channel << 19) | // 通道地址 (AD5754_RANGE_REG << 16) | // 范围寄存器 range; // 范围设置 CS_LOW(); spi_transmit_24bit(spi_data); CS_HIGH(); }