您好!
我正在尝试将 ADC 值发送到 SPI 上的微控制器(Hercules)。 ADC 需要18个时钟来输出16位数据、但 Hercules 的最大字长为16位。 因此、我正在执行2次连续接收、这样我得到2个16位字、然后将这些字移出2个位以补偿2个时钟周期。 但我无法获得 MISO 引脚上的确切读数。 您还能帮助我处理将获得的代码转换为模拟电压值时应使用的数学运算。 (我在单端工作模式下使用 ADC)
谢谢、
Aditi
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在尝试将 ADC 值发送到 SPI 上的微控制器(Hercules)。 ADC 需要18个时钟来输出16位数据、但 Hercules 的最大字长为16位。 因此、我正在执行2次连续接收、这样我得到2个16位字、然后将这些字移出2个位以补偿2个时钟周期。 但我无法获得 MISO 引脚上的确切读数。 您还能帮助我处理将获得的代码转换为模拟电压值时应使用的数学运算。 (我在单端工作模式下使用 ADC)
谢谢、
Aditi
您好、Aditi、
结果将是一个带符号的二进制补码16b 代码。 您提到过您使用的是单端。 在这种情况下、假设模拟电源设置为5V、则 VREF 输入和负模拟输入(-IN)应设置为2.5V。
在正模拟输入(+IN)引脚上施加0->5V 的电压将提供以下代码(参见图47):
0V 输入将提供1000.0000.0000.0000.0000b 的负满量程代码。 (-32768d)
2.5V 输入将提供一个零标度代码、0000.0000.0000.0000b (0d)
5V-1LSB 输入将提供满量程代码、0111.1111.1111.1111b (32767d)
要根据转换代码计算输入电压、公式将为:
Vinput = 2.5V + 2*Vref*code/2^16
代码=-20000d
Vinput = 2.5V + 2*2.5V*-20000/65536 = 0.97412V
此致、
Keith Nicholas
精密 ADC 应用