请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:ADS122C04 主题中讨论的其他器件:MSP430FR2633、
大家好、
我从下图中执行的引脚连接。
我使用10k 电阻器值作为上拉电阻器、并从8MHz SMCLK 时钟为 I2C 选择了100kbps 的速度。
我正在尝试将 ADS122C04 24位 ADC 与 MSP430FR2633连接
我编写了以下算法:
1.发送复位命令(0x06)
2.写入配置寄存器
a.寄存器0 (0x40)= 0x81;
b.寄存器1 (0x44)= 0x04;
C.寄存器2 (0x48)= 0x00;
d.寄存器3 (0x4C)= 0x00;
//这里我使用的是单次短对话模式和单通道读取模式
3.发送启动命令(0x08);
4.循环
{
等待 DRDY 引脚转换为低电平;
发送读取命令(0x10);
}
发送 START 命令后、DRDY 引脚变为低电平。
上述算法我已经实现、每次只能从 ADC 读取数据=[0xFF、0xFF、0xFF]。
我还在 AIN0通道上使用电位计提供不同的电压、范围为0至3.3V、但在 不同的电压下接收相同的数据(数据=[0xFF、0xFF、0xFF])。
以下是我的8MHz 时钟配置: { _bis_SR_register (SCG0); //禁用 FLL CSCTL3 |= SELREF_REFOCLK; //将 REFO 设置为 FLL 基准源 CSCTL0 = 0; //清除 DCO 和 MOD 寄存器 CSCTL1 &=~(DCORSEL_7); //首先清除 DCO 频率选择位 CSCTL1 |= DCORSEL_3; //设置 DCO = 8MHz CSCTL2 = FLLD_0 + 243; // DCODIV = 8MHz _DELAY_CYCLES (3); _BIC_SR_register (SCG0); //启用 FLL while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));//轮询直到 FLL 被锁定 CSCTL4 = SELMS_DCOCLKDIV | SELA_REFOCLK;//将默认 REFO (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz //将 DCODIV 默认为 MCLK 和 SMCLK 源 } 下面是我的 I2C 配置 :{ UCB0CTLW0 |= UCSWRST; //将 eUSCI_B 置于复位状态 UCB0CTLW0 |= UCMODE_3 | UCSSEL_3 | UCMST | UCSYNC;// I2C 主模式、SMCLK UCB0BRW = 0x33; //将比特率设置为100kHz UCB0I2CSA = 0x40; // ADC122C04从器件地址 UCB0CTLW0 &=~UCSWRST; //软件复位禁用 }
请勿庸置疑。
此致、
开尔文