STM32f407的ADC采样值出错

STM32f407的ADC采样值出错

   使用STM32f407的ADC遇到一个奇葩的问题。

问题

   STM32f407的ADC在采样的时候,值很大,甚至超过4096(stm32最高位12bit的ADC)。通过调试发现,无论设置了数据左对齐还是右对齐,其结果都是左对齐!!!这才导致了值很大,甚至超过4096。当然可以将这个结果移位来解决,但不是根本办法。
   还是想,这到底为什么?明明配置了数据对齐方式,却没有效果。

问题发现

   一个小时过后…
   两个小时过后…
   一个下午过后…发现,只要:

	CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps   
	Adc_Init();         //初始化ADC

   初始化CAN后,立即初始化ADC,就会有这个问题。终究不知道是为啥,并且这两个外设也没有共用引脚。

问题解决

   换一下顺序:

	Adc_Init();         //初始化ADC
	CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps   

   最好还不要连着放在一起。可以尝试:

	Adc_Init();         //初始化ADC
	//其他代码
	CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,3,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps   
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
首先,STMF407ZGT6和STM32F407VET6是基于ARM Cortex-M4内核的微控制器。在进行源码移植时,需要注意两者之间的硬件差异。 ADC采样出现问题可能是由于以下几个原因导致的: 1. 外设引脚配置不正确:确认ADC引脚配置正确连接,并且使能对应的GPIO外设。 2. ADC时钟配置不正确:配置ADC时钟时需要考虑不同芯片的时钟树结构和时钟配置寄存器。确保时钟配置正确,并且提供足够的时钟给ADC模块。 3. ADC初始化设置不正确:根据目标芯片的参考手册,确保ADC模块的初始化设置正确。注意参考电压、转换模式、采样时间等参数的配置。 4. ADC触发源设置不正确:确认ADC启动的触发源以及触发模式设置正确,例如定时器触发、软件触发或外部触发。 5. DMA配置不正确:如果使用DMA进行ADC数据转移,需要正确配置DMA通道和DMA传输模式。 如果在确认以上几个方面没有问题的情况下,仍然存在ADC采样问题,可以考虑以下步骤进行调试: 1. 使用调试器:通过串口调试器或仿真器,在代码执行过程中进行断点设置和变量查看,以确定问题出现的具体置。 2. 输出调试信息:在ADC采样时,可以通过串口输出相关的调试信息,例如采样、寄存器状态等,以便进一步分析问题。 3. 参考官方例程:查阅STMicroelectronics官方提供的开发板和芯片参考手册,并尝试运行官方的ADC采样示例代码,以验证硬件和软件配置的正确性。 4. 联系技术支持:如果以上步骤仍无法解决问题,可以通过STMicroelectronics的技术支持渠道,向他们报告问题并获取专业指导。 总之,在移植STM32F407ZGT6源码到STM32F407VET6时,需要仔细检查硬件和软件配置的差异,并针对性地进行调试和调整,以解决ADC采样问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuntou0906

玛莎拉蒂是我的目标!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值