当前位置: 首页 > news >正文

GEDFFWE[麦麦茶水间] 【每周分享】沁恒CH592F开发中遇到的ADC采样不准及解决方案

最近接到一个物联网项目,就是做一个蓝牙控制继电器的案例,主控芯片采用国产沁恒CH592F,之前从没有用这个芯片开发过,所以对芯片并不了解,项目中有两个温度传感器,需要用到单片机ADC采集并转换成温度值,本来这个都比较简单的,也没有什么好说的,但是采集过程却一波三折,下面我给大家细细道来。
下面给大家看看今天的主角。

其中的温度adc电路如下

分别连接到PA12,PA13两个引脚,写了一个简单的代码,

复制
  1. /*********************************************************************
  2. *@fn NTC_SampleChannel_DMA_Block
  3. *
  4. * @brief 使用DMA阻塞方式采集指定通道的NTC数据
  5. *
  6. * @param channel - ADC通道
  7. *@param buf - 数据缓冲区
  8. *@param len - 缓冲区长度
  9. *@param timeout_ms - 超时时间(毫秒)
  10. *
  11. * @return 0-成功, -1-失败
  12. */
  13. int NTC_SampleChannel_DMA_Block(uint8_t channel, uint16_t *buf, uint16_t len, uint32_t timeout_ms)
  14. {
  15. if((buf == NULL) || (len == 0))
  16. return -1;
  17. // 选择通道
  18. ADC_ChannelCfg(channel);
  19. // 设置自动转换周期
  20. ADC_AutoConverCycle(192);
  21. // 配置DMA
  22. ADC_DMACfg(ENABLE, (uint32_t)buf, (uint32_t)(buf + len), ADC_Mode_Single);
  23. // 启动自动DMA采样
  24. ADC_StartAutoDMA();
  25. // 等待DMA完成
  26. uint32_t waited = 0;
  27. const uint32_t poll_interval_ms = 10;
  28. while(!ADC_GetDMAStatus())
  29. {
  30. mDelaymS(poll_interval_ms);
  31. waited += poll_interval_ms;
  32. if(waited >= timeout_ms)
  33. {
  34. // 超时: 禁用DMA并返回错误
  35. ADC_DMACfg(DISABLE, 0, 0, 0);
  36. return -1;
  37. }
  38. }
  39. // 清理DMA
  40. ADC_StopAutoDMA();
  41. R16_ADC_DMA_BEG = ((uint32_t)buf) & 0xffff;
  42. ADC_ClearDMAFlag();
  43. ADC_DMACfg(DISABLE, 0, 0, 0);
  44. return 0;
  45. }
  46. /*********************************************************************
  47. *@fn NTC_GetAverage
  48. *
  49. * @brief 计算ADC采样平均值
  50. *
  51. * @param buf - 数据缓冲区
  52. *@param len - 缓冲区长度
  53. *
  54. * @return 平均值
  55. */
  56. uint16_t NTC_GetAverage(uint16_t *buf, uint16_t len)
  57. {
  58. if((buf == NULL) || (len == 0))
  59. return 0;
  60. uint32_t sum = 0;
  61. for(uint16_t i = 0; i <len;i++)
  62. {
  63. sum+=(buf[i]&RB_ADC_DATA);
  64. }
  65. return(uint16_t)(sum/len);
  66. }

采集出来的信息通过CDC虚拟的串口打印,但是打印出来的却是明显与实际温度不对,


后面找了好久的错误,但一直都没有找到,本来想偷懒,不想看数据手册,现在没有办法了,只能拿出手册仔细查看了,不看不知道,一看吓一跳,这个ch592f与我们平时用的MCU的adc都不同,下面我贴出来,免得大家以后再继续踩坑。

原来它的ADC可以带放大的,还有参考电压不同,如是赶紧修改我的宏定义。

下面再编译下载,终于在串口打印出正常的室温了。

https://www.douban.com/topic/480396877/
https://www.douban.com/topic/480396877/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396877/
https://m.douban.com/topic/480396877/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396854/
https://www.douban.com/topic/480396854/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396854/
https://m.douban.com/topic/480396854/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396838/
https://www.douban.com/topic/480396838/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396838/
https://m.douban.com/topic/480396838/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396786/
https://www.douban.com/topic/480396786/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396786/
https://m.douban.com/topic/480396786/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396742/
https://www.douban.com/topic/480396742/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396742/
https://m.douban.com/topic/480396742/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396692/
https://www.douban.com/topic/480396692/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396692/
https://m.douban.com/topic/480396692/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396634/
https://www.douban.com/topic/480396634/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396634/
https://m.douban.com/topic/480396634/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396557/
https://www.douban.com/topic/480396557/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396557/
https://m.douban.com/topic/480396557/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396539/
https://www.douban.com/topic/480396539/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396539/
https://m.douban.com/topic/480396539/?_spm_id=MjM4Nzc4MjY0
https://www.douban.com/topic/480396489/
https://www.douban.com/topic/480396489/?_spm_id=MjM4Nzc4MjY0
https://m.douban.com/topic/480396489/
https://m.douban.com/topic/480396489/?_spm_id=MjM4Nzc4MjY0

http://www.jsqmd.com/news/470262/

相关文章:

  • 从零构建企业级网页搜索:Elastic Open Crawler 架构解析与实战部署
  • 2026年热门的滑冰场设备品牌推荐:滑冰场管材优质供应商推荐参考 - 品牌宣传支持者
  • 游戏闪退/软件打不开?这款DirectX修复工具,一键搞定DLL文件缺失!
  • day10 126-130
  • 2026年评价高的地坪漆厂家推荐:水性地坪漆/车库地坪漆高评价厂家推荐 - 品牌宣传支持者
  • 抓只小龙虾来养养
  • springboot基于javaEE 学生成绩管理系统
  • 从一块电路板到宇宙的结构:一次关于碳族元素与存在本质的漫游
  • 2026年质量好的特医功能食品工厂品牌推荐:特医功能食品工厂品牌榜 - 品牌宣传支持者
  • 2026年比较好的昆山0元注册公司推荐:昆山公司代办注册/昆山花桥注册公司精选服务企业 - 品牌宣传支持者
  • 一次揪心的ITX主板维修:Cmos电池漏电快
  • 掌握大数据领域数据清洗,开启数据新征程
  • 2026年质量好的厂房维修品牌推荐:浙江厂房维修值得信赖榜 - 品牌宣传支持者
  • (132页PPT)SAP汽车制造企业ERP蓝图规划整体解决方案(附下载方式)
  • (132页PPT)汽车智能制造企业数字化转型SAP解决方案(附下载方式)
  • PyTorch数据加载器超快
  • Python 中的并发 —— 线程
  • 2026年热门的河北冶金膨润土厂家推荐:河北铸造膨润土实力工厂推荐 - 品牌宣传支持者
  • 2026年比较好的石英砂工厂推荐:精制石英砂工厂直供推荐 - 品牌宣传支持者
  • 2026年热门的裁剪机切割系统品牌推荐:江苏智能裁剪机正规生产厂家推荐 - 品牌宣传支持者
  • 2026年热门的进口烧烤椰壳炭公司推荐:马来西亚椰壳炭公司口碑哪家靠谱 - 品牌宣传支持者
  • 2026年耐热纤维龙门裁断机厂家推荐:液压裁断机/自动送料裁断机/移动头式裁断机厂家实力哪家强 - 品牌宣传支持者
  • 2026年靠谱的木炭品牌推荐:非洲钢炭木炭/烧烤取暖原木炭/进口东南亚工业木炭实力品牌厂家推荐 - 品牌宣传支持者
  • 2026年评价高的年检爆破资质代办公司推荐:安全监理爆破资质代办/安全评估爆破资质代办/作业单位许可证爆破资质代办咨询机构哪家专业 - 品牌宣传支持者
  • 2026年热门的乐清企业办公家具公司推荐:温州办公家具桌椅工厂直供哪家专业 - 品牌宣传支持者
  • 2026年质量好的温州单位办公家具公司推荐:温州企业办公家具/杭州企业办公家具/杭州时尚办公家具源头工厂推荐 - 品牌宣传支持者
  • 揭秘7款AI论文工具内幕:高阶降重技巧,精准控制AI率无压力 - 麟书学长
  • 048海产品销售系统-springboot+vue
  • 0313-Kubernetes 故障实战:FailedScheduling 深度分析与故障注入
  • 2026多层电蒸锅哪个品牌的比较好 - 品牌排行榜