请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:ADS8665 大家好、我正在尝试将 ADS8665与 Arduino uno 板连接、但我获得了 ADC 值常量、如下图中所述。
我关注这个链接
https://electronics.stackexchange.com/questions/503063/interfacing-ad7321-adc-with-arduino-using-spi
输出
我的密码:
#包含
#define CS_PIN 7 //引脚10定义为 CS 引脚。 //AD7321 12位
空 setup()
{
Serial.begin(115200);//Initalise 端口用于在串行终端上打印
引脚模式(CS_PIN、OUTPUT);//引脚10作为 CS
digitalWrite (CS_PIN、HIGH);
SPI.begin(); //初始化 SPI 端口
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV128);
initialize();
}
void loop()
{
uint16_t adcOut=0;
浮点值=0.0;
initialize();
adcOut = readADC (0);
adcOut =(adcOut<<3); //位移以获取最后13位
值=(adcOut>>3);
serial.println (值);
//延迟(0.5);//等待一秒钟
delayMicroseconds (0.5);//延迟
}
uint16_t readADC (int 通道)
{
uint16_t output=0;
digitalWrite (CS_PIN、LOW);
字节 MSB=0;
字节 lsb=0;
MSB = SPI.transfer (0x00);
LSB = SPI.TRANSMIT (0x00);
digitalWrite (CS_PIN、HIGH);//通过将 CS_PIN 拉至高电平来取消选择从器件。
输出=(msb << 4 | lsb);//将 msb 与 LSB 组合成16位模拟读取 值。
// Serial.println (输出);
返回输出;//输出值
}
void initialize()
{
digitalWrite (CS_PIN、LOW);//通过将 CS_PIN 拉至低电平来选择已连接的芯片。
spi.transfer (0b00000000); //定义范围寄存器->写入(1)| 0 |寄存器选择(1)| Vin0A | Vin0| 0 | Vin1A |
spi.transfer (0b00000000); //| Vin1B | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
digitalWrite (CS_PIN、高电平);
delayMicroseconds(1);
digitalWrite (CS_PIN、LOW);
spi.transfer (0b00000000); //定义控制寄存器->|写入(1)| 0 |寄存器选择(0)| 0 | ADD0 | Mode1 | Mode0 |
spi.transfer (0b00001011); //| PM1 | PM0 |编码|参考|序列1 |序列2 | 0 | 0 |
digitalWrite (CS_PIN、高电平);
delayMicroseconds(1);
}
方框图连接
您能指导我如何连接 MCU 吗?
Br
DG