ADC采集的数据通过串口进行发送 (2)

1  在RIDE板子上调通的基础上,硬件替代成CJ-575板。在后面步骤中并开始将代码中的硬件配置部分给对应成CJ-575板子的ARM9芯片的配置。

 

2  将ADC_CHANNEL和ADC_CHANNEL_MODE给定义成第3通道或是第4通道,在CJ-575中的P4.3第三通道是温度监控(TEMP_MON)。

ADC采集的数据通过串口进行发送 (2)_第1张图片

ADC采集的数据通过串口进行发送 (2)_第2张图片

ADC采集的数据通过串口进行发送 (2)_第3张图片

 

3  ADC的结构体的配置

ADC采集的数据通过串口进行发送 (2)_第4张图片

因为在第二步时已经将ADC_CHANNEL和ADC_CHANNEL_MODE所在的宏定义给定义成第3通道,所以在main函数里的ADC结构体的配置中直接已经将其配置好了为第三通道的采集。

此步不作任何改动。

 

4  将ADC_GetConversionValue( )里的数值改为0x03。

ADC采集的数据通过串口进行发送 (2)_第5张图片

因为ADC_GetConversionValue( )的变量函数代表的是ADC_Channel,而ADC_Channel的宏定义如下。

ADC采集的数据通过串口进行发送 (2)_第6张图片

此处即为将ADC_GetConversionValue( )里的获取的是ADC_Channel_3的信号。

 

至此,正常的硬件会直接采集到ADC的信号并通过UART发出到PC中的串口调试助手上界面上。可是实际的发送情况却是23 03 FF 77  12 02 0F 77。两组数据跳跃着发送,八成是23 03 FF 77,两成的数据会跳成12 02 0F 77

这种情况我一直仍在软件的配置上找原因,可是实际原因却是硬件的原因。

 

5  问题在于R401和R402及+3.3VA这一路上。

ADC采集的数据通过串口进行发送 (2)_第7张图片

ADC采集的数据通过串口进行发送 (2)_第8张图片

+3.3VA这一路并没有接通,没有通过电源转换的电压转过来,所以ARM芯片的123pin的AVREF这个脚是高阻态。因此在串口助手中会出现任何不确定值。

 

6  将C145(见上图PCB)的+3.3VA飞线到R409的+3.3V的pin脚上,使得ARM芯片接上了+3.3V。

 

7  将R402的电阻给拆掉使断路。将R401的电阻改小,100K →10K →100Ω →10Ω,或是其实可以直接短上。

这么做的目的在于将ARM芯片的内置ADC的参考电压给确定下来。查找芯片手册其参考电压是在( 2.7V ~ VDDQ)这个范围才可以正常工作。大于或是小于都无法正常工作。通过R401电阻之后的给到ARM芯片上的电压对应着 03FF 这个极限值。

当采集的电压为多少时,和参考电压的比例 再换算成十六进制数值和03FF的比例。

即为正常。

ADC采集的数据通过串口进行发送 (2)_第9张图片

ADC采集的数据通过串口进行发送 (2)_第10张图片

 

8))  第3通道ADC_Channel_4的监控数值,得到的结果换算后为2.1V左右。差值在合理范围,功能良好。

ADC采集的数据通过串口进行发送 (2)_第11张图片

你可能感兴趣的:(ARM)