[技术问答] NUC230片子的ADC采集数据有问题,

[复制链接]
122|6
 楼主 | 2019-3-14 16:32 | 显示全部楼层 |阅读模式
本帖最后由 通宵敲代码 于 2019-3-14 22:40 编辑



问题如上描述,ADC可以采集数据,但采集到的数据一直接近0xFFF(有变化),
经测量发现,ADC使用的IO引脚初始化后,依然会输出电压,
通过更改程序测试后发现,尽管配置了ADC模式,并关闭了该引脚的数字逻辑输出,
单IO引脚印染可以控制输出高低电平,
输出高电平时,ADC采样接近0xFFF,输出低电平时,ADC采样接近0x000,
不知道是不是芯片自身有BUG,还是我初始化程序不会对
@奔跑的牛 @clyu @Risn


///////////////////////////////////////////////////////////////////////////////////////////////////////
更新一下,问题已解决,是BSP库中的参考例程移植的坑
其中本次所用的库为NUC230_240 Series BSP CMSIS V3.01.001,
参考的例程为*\StdDriver\CAN_NormalMode_Transmit


针对问题现象,通过分析发现,ADC确实是已经在工作了,但IO口功能并未关闭,
导致引脚仍然可以继续输出逻辑点评0或1,通过外接可调电阻测试,
发现当引脚电压强制逐渐拉低时,ADC采样是会随着输入电压值变化的,

迫不得已使用了最简单也是最笨的办法,挨个函数逐条语句屏蔽,定位问题,
最终发现,当关闭CAN1初始化函数时,ADC采样正常,
继续定位后发现,问题由如下一条语句引起,顿然醒悟


其中关于CAN1函数引脚复用功能配置的时候,并未使用位或赋值
而是直接对整个寄存器直接赋值,导致PA端口除CAN1以外的其他引脚,
均作为了普通IO口使用,具体函数如下

经检查发现,此版本的BSP中四个关于CAN的测试例程,程序均是如此,还望避坑






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2019-3-14 16:39 | 显示全部楼层
你跑个官方的测试代码看看
| 2019-3-14 16:39 | 显示全部楼层
BSP里的测试代码肯定是对的。你试试,如果还是有问题,可能你使用不当给烧毁内部电路了
 楼主 | 2019-3-14 22:42 | 显示全部楼层
heisexingqisi 发表于 2019-3-14 16:39
BSP里的测试代码肯定是对的。你试试,如果还是有问题,可能你使用不当给烧毁内部电路了 ...

问题已解决,多谢
| 2019-3-18 23:29 | 显示全部楼层
mark
| 2019-3-18 23:42 | 显示全部楼层
  /* Disable the GPB0 - GPB3 digital input path to avoid the leakage current. */
    GPIO_DISABLE_DIGITAL_PATH(PB, 0xF);
是不是要关闭这个。
 楼主 | 2019-3-21 09:14 | 显示全部楼层
zhuomuniao110 发表于 2019-3-18 23:42
/* Disable the GPB0 - GPB3 digital input path to avoid the leakage current. */
    GPIO_DISABLE_DI ...

使用ADC时这句指令是要有的,
是为了防止内部逻辑电路引起漏电流,
干扰ADC采样数据的准确性,

不过我的问题跟这个没有关系,
我程序中也关闭了逻辑通道电路
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表