主题中讨论的其他器件: REF6025
尊敬的 TI 支持团队:
我正在尝试将 TI 的 ADS8321 16位 ADC 与 tensy 3.5 (Arduino 兼容平台 MCU)连接。 (VIN-= 2.5V、Vref=2.5V、Vin+为电压输入)。
ADC 电压为5V、而 Tensy 电压为3.3V。 我已 İnput 数据表、Δ I 高电平和低电平对于 Tensy 逻辑电平是可以的。 此外、Tensy 输入与 ADC 输出正常。 我已经按照数据表中的说明进行了通信。 问题是我无法获得稳定的结果。 例如、当我尝试使用 ADC 读取3.3V 电平时、它显示不同且错误的值。 虽然输入电压(例如3.3V)始终相同、但我从 ADC 获得的值并不相同。 ADC 位于 PCB 上、而 Tensy 也位于同一 PCB 上、它们与 PCB 轨道相连。 我检查了接线、它也是正确的。
我在代码中未使用 SPI。 我只是在做一些砰砰声。 对于 SPI 器件、我不知道如何通过查看器件数据表来实现 SPI。 如果可能、您可以为 SPI 通信提供一些伪代码(通过 SPI 等发送什么内容)。
我正在连接我的代码和接线图。 请帮我解决问题。
感谢你的帮助。
阿赫迈特
//ADS8321电流测量、ADC 16位 const int clock_pin = 3; const int data_pin = 4; const int cs_pin = 5; void setup (){ pinMode (clock_pin、输出); pinMode (data_pin、输入); pinMode (cs_pin、 Output); } void loop(){ float m = readadc(); sery.println (m); delay (1000); } float readadc(){ int16_t adcvalue = 0; digitalWrite (cs_pin、low); //为 (int i = 0;i < 6;i++){选择 ADC digitalWrite (clock_pin、HIGH); //进行采样的6个时钟周期 //delayMicroseconds (5); digitalWrite (clock_pin、low); //delayMicroseconds (5); } //从 ADC 读取位,//数据读取时钟 (int i = 16;i > 0;i---){// 16读取 //周期时钟 digitalWrite (clock_pin、HIGH);//将时钟设为高电平 adcvalue |= digitalRead (data_pin)<< i;//读取数据位 digitalWrite (clock_pin、low);//将时钟设为低 电平} float a; a=(adcvalue_32768)*5/65536;//转换为0-5V 范围 digitalWrite (cs_pin、high); //关闭设备 返回 a; }