我开启了KEZA128 ADC的自动比较功能.
UP-Limit = 1.5V, 配置ADC_SC2[ACFGT] = 1,比较上限值,采样转换后的值如果是2,高于UP-Limit,ADC_SC1[COCO] is set,高出的值是0.5,ADC寄存器R中的值读出来是0.5。
而LOW-Limit 1.5V, 配置ADC_SC2[ACFGT] = 0,比较下限值,采样转换后的值是1,低于LOW-LIMIT,ADC_SC1[COCO] is set,低于的值仍是0.5,但是ADC寄存器R中的值读出来是2.5。
最后一句话:将转换结果与比较值的补数相加生成的值传送到ADC_R。
但是我测得的结果不都是相加呢。而是一个作差,一个求和呢(根据比较上限还是下限)。
请问为什么要这么设计呢?
We assume that your email was intended to receive support from NXP technical support.
Due to legal reasons we are not allowed to interact with unidentified contacts.
支持工单提交后似乎不能撤回,也不能修改。没有找到关闭的选项。
Hi liangzf,
不是很清楚你具体怎么计算的“一个作差,一个求和”
我在开发板上测试了几组数据,感觉都是求和(但舍弃溢出bit位,只保留比如8位作为比较结果)
假设8位ADC,比较值设定满量程的一半也就是128(0x80)
设定与128(0x80)比小,当输入电压采样得127(0x7F)时
127 + 128 = 255 未溢出8位,故ADC_R=255
设定与128(0x80)比大,当输入电压采样得129(0x81)时
129 + 128 = 257 溢出故只保留末8位,ADC_R=1
设计思路应该是电路实现上简单吧
Best Regards,
Robin
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi,Robin:
首先感谢你的反馈。
由于规定,我不能把数据截图上传。我的是KEAZ128,我自己开始设的比较值2000,输入值是1952,比小的话,R为3952。 当我把比较值设定为500,我的输入值是1868时,比大的话,我得到的R值是368。
溢出的问题我之前已经发现了。我的是12位的ADC,溢出值是4096。
建议你更改下数值,因为129-128=?
hhhhh.....
^_^
Best Regards,
Liang
最后那句话如果理解成“比较得差值以补码形式存入ADC_R寄存器中”就说得通了。
比大
输入值:1868
比较值:500
1868 - 500 = 1368
ADC_R = 1368 (正数的补码)
比小
输入值:1952
比较值:2000
1952-2000 = -48
ADC_R = 4048 (负数的补码)
Best Regards,
Robin
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi,Robin:
Thanks!
The value generated by the addition of the conversion result and the complement of the compare value is transferred to ADC_R.
之前看的子参考手册,中文译为:转换结果与比较值的补值相加所得到的值被传输到ADC_R。 没有理解这句话的含义。
还想深入了解一下,ADC自动比较功能主要用于什么产品,为什么要设计成比较得差值以补码形式存入ADC_R寄存器中,而不设计成与比较值的差值存入ADC_R寄存器中。
以及我初次使用Ticket support、之前提问没有用英文,你的同事Alexis Andalon回复我的邮件中让我转换成英文。由于没有外发权限,我没有办法及时联系他。
可否帮我转告他问题已大致解决。
此外,我发现提交的Ticket support没有办法进行修改,Ticket support后续还需要我进行操作么?
Best Regards,
Liang
Hi Liang,
关于如何使用Ticket support的问题,我的同事上周应该已经致电你了。
如果还有Ticket support使用方面的问题,可以通过在线问答与我们沟通。
Best Regards,
Robin
之前公司邮件拦截,没能在邮箱看到你的回复,今天才看到,实在不好意思。
非常感谢。
我没有接到你同事如何使用Ticket support的来电。
有时间我想尝试下在线,再次感谢、