主题中讨论的其他部件: DAC7760
我们失去了DAC8760项目的主要开发人员,所以我现在就成为了。
我尝试了MSP430的示例代码,它似乎工作正常,但当发送的数据为0xEDB8并且应该接近10V时,它只输出0.82V。
DAC8760_Reset(); /* 0x56 */
DAC8760_Nop();
DAC8760_WriteReg (((uint16_t) 0x1001,DAC7760_Address_WriteControlRegister); /* 0x55 */
DAC8760_Nop(); /* 00,00 */
DAC8760_WriteReg (((uint16_t)0x1001,DAC7760_Address_WriteControlRegister); /* 0x55 */
DAC8760_WriteReg (((uint16_t)0x0330, DAC7760_Address_WriteConfigurationRegister); /* 0x57 */
DAC8760_WriteReg (((uint16_t)0x8000,DAC7760_Address_WriteGainCalibrationRegister); /* 0x58 */
DAC8760_WriteReg (((uint16_t)0x0000,DAC7760_Address_WriteZeroCalibrationRegister); /* 0x59 */
DAC8760_Nop();
DAC8760_Nop();
DAC8760_WriteReg (((uint16_t)0x1001,DAC7760_Address_WriteControlRegister); /* 0x55 */
DAC8760_WriteReg (((uint16_t)0x0330, DAC7760_Address_WriteConfigurationRegister); /* 0x57 */
DAC8760_WriteReg (((uint16_t)0x8000,DAC7760_Address_WriteGainCalibrationRegister); /* 0x58 */
DAC8760_WriteReg (((uint16_t)0x0000,DAC7760_Address_WriteZeroCalibrationRegister); /* 0x59 */
稍后在I输出DAC8760_WriteReg (((uint16_t)5.9577万,DAC7760_Address_WritedataRegister); /* 0x02 */上
我等待一秒钟并输出DAC8760_WriteReg (((uint16_t)0, DAC7760_Address_WritedataRegister);/* 0x02 */
并在5.9577万和0之间来回切换。 我的结果是0.82 和0非常一致。
我可以在一个Saleae逻辑分析器上看到所有这些。 该输出与原始项目相同,但我得到的唯一输出是0.82V。
原始代码在C++中,我们被告知将其转换为C。 以上代码是查看其功能的最小系统。 C++代码生成良好的值,但代码中的某处是我不知道的“诀窍”。
感谢您的帮助。
涉水