AD5755-1芯片程序调试以及遇到的问题
本次项目,AD5755-1采用SPI通信方式进行控制,采用SPI模式3,即时钟极性1,空闲时高电平,时钟相位0,第一个上升沿采样。然后就是配置寄存器,寄存器配置可以参考芯片手册。
驱动程序编写思路
- 芯片初始化:软复位/硬件复位
软复位是往控制寄存器4写入0x555
首次上电,需要等待AD5755一个上电时间,再去SPI控制,否则可能控制失败。
这里延迟个几个毫秒就可以 - 复位后延时几毫秒
- 设置DAC各通道控制寄存器输出电压/电流模式,以及输出使能
#define AD5755_CHANNEL_NUMS 4
/* Main Control Register definition. */
#define AD5755_MAIN_POC (1 << 12)
#define AD5755_MAIN_STATREAD (1 << 11)
#define AD5755_MAIN_EWD (1 <<10)
#define AD5755_MAIN_WD(x) (((x) & 0x3) << 8)
#define AD5755_MAIN_SHTCCTLIM(x) (((x) & 0x1) << 6)
#define AD5755_MAIN_OUTEN_ALL (1 << 5)
#define AD5755_MAIN_DCDC_ALL (1 << 4)
/* AD5755_DAC_R(x) options. */
#define AD5755_R_0_5_V 0 // 0 V to 5 V voltage range (default)
#define AD5755_R_0_10_V 1 // 0 V to 10 V voltage range
#define AD5755_R_M5_P5_V 2 // -5 V to +5 V voltage range
#define AD5755_R_M10_P10_V 3 // -10 V to 10 V voltage range
#define AD5755_R_4_20_MA 4 // 4 mA to 20 mA current range
#define AD5755_R_0_20_MA 5 // 0 mA to 20 mA current range
#define AD5755_R_0_24_MA 6 // 0 mA to 24 mA current range
/* DC-to-DC Control Register definition. */
#define AD5755_DC_DC_COMP (1 << 6)
#define AD5755_DC_DC_PHASE(x) (((x) & 0x3) << 4)
#define AD5755_DC_DC_FREQ(x