0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带32位MCU和高精度ADC的SoC

晶华微 来源:阿红呀 作者:阿红呀 2022-02-22 10:34 次阅读

一、前言

您在使用新款芯片和新的开发环境进行开发的过程中是否会遇到以下问题:如何快速建工程?如何快速上手编程?不了解芯片功能?实现功能和预期不符?

本开发指南将手把手帮工程师们解决以上问题,了解芯片的各个模块,对照手册熟悉各个模块的寄存器配置。同时,分享一些常见的错误用法,避免您走一些弯路,从而提高开发效率。

二、程序描述

示例程序是以SD93F115-JBS芯片编写,包含了按键中断、RTC中断、SDADC、SARADC、RTC、DAC、低压检测、LCD显示、休眠测试等多个基础功能综合的一个程序,配合按键中断进入不同的子程序进行演示。

附件SD93F115-JBS_TEST是已经编写好的示例程序,其主体思路:先对芯片进行系统初始化,再对需要使用的功能进行配置,然后进入主循环通过按键中断选择置起相应的测试标志位,进入相应的测试项实现功能演示。

最后按照《软件篇》的方法将程序下载至芯片中。

三、main函数

main函数的整体框架,如图3-1:

带32位MCU和高精度ADC的SoC

图3-1 main函数

如上图所示,main函数首先运行的是Sys_MyInit()系统初始化,因为芯片上电后的默认状态下基本只有IHRC和ILRC在工作,大部分的外设都需要打开对应时钟后,才可以重新配置相应模块,后期自行开发时有需要用到的外设可参照应用手册13.7节--时钟与复位寄存器优先开启时钟。

由于IHRC是校准过的,只需从RCC_IHRC_CLBR寄存器将校准数据存入RCC_IHRC_CR寄存器即可完成校准动作,模拟部分电源BG、ACM和AVDDR默认上电是关闭的,后续也会用到,直接调用库函数打开,完成对芯片的初步配置。如下图3-2所示:

带32位MCU和高精度ADC的SoC

图3-2系统初始化函数

系统初始化之后,进行FLAG_Init()标志位初始化,该函数里的标志位是自定义的一些变量,在后续程序执行时会使用到,而在初始运行函数时,这些变量可能是随机数据,需要进行变量清零。如下图3-3所示:

带32位MCU和高精度ADC的SoC

图3-3自定义标志位初始化函数

自定义标志位初始化之后,为保证程序运行正常,在编写其他函数前,需要先编写一个IWDG_Init()独立看门狗初始化函数(脱离主函数单独计数的一个寄存器,属于硬件范畴),它能在程序跑飞的情况下,复位芯片,使程序重新开始运行。独立看门狗结构图如下图3-4:

带32位MCU和高精度ADC的SoC

图3-4独立看门狗结构图

从结构上看,独立看门狗是以低频时钟ILRC的分频为时钟源,当WDT_COUNTER计数时间超过设置值时溢出,芯片便会产生中断或复位,注意一旦独立看门狗使能后软件就无法关闭IWDG和ILRC,除非产生复位。

独立看门狗初始化函数如图3-5所示:

带32位MCU和高精度ADC的SoC

图3-5独立看门狗初始化函数

这里直接调用库函数,将独立看门狗预分频器设置8分频,溢出时间设置为23040,最后开启看门狗选择正常模式工作,待机模式不工作,在此配置下计算的复位时间t=5.76秒。

因为开启了独立看门狗,但又不希望程序在正常运行时发生复位,所以需要在正常运行的程序期间加入‘喂狗’操作,防止芯片在正常情况下复位,尤其是在执行循环过程中是需要特别注意进行‘喂狗’操作的,建议溢出时间不要设的太小。

独立看门狗初始化后,还对按键中断、PWM、SDADC、SARADC、UART、RTC和LCD显示等功能也进行了初始化,在后面的章节会详细介绍。

为了更直观的看到程序是否正常运行,先在LCD屏上显示‘123456’,然后用一个GPIO做数字输出来驱动外部LED灯进行闪烁,GPIO初始化如下图3-6:

带32位MCU和高精度ADC的SoC

图3-6 GPIO初始化函数

首先打开GPIO外设时钟使能,将P83口设置为数字输出,配置为大电流模式(最大电流可以达到12mA),为避免其他GPIO引脚悬空造成未知影响,将所有没有使用的GPIO全部配置为输入上拉模式。

宏定义了P83引脚的输出,使得控制LED灯的状态更清楚,然后在main函数的while循环里每隔50ms把P83状态翻转,即可控制LED灯的亮灭,最终程序运行PCB板的初步现象就是LCD显示‘123456’,LED灯不停闪烁,等待按键中断的来临。

带32位MCU和高精度ADC的SoC

图3-7 P83引脚输出宏定义

四、总结:

本文介绍了Main函数的整体运行流程,重点在于编程时要优先开启需要使用的外设时钟,再配合库函数的使用可以有效减少开发过程中遇到的问题,芯片的其他功能将会在后续章节逐一分享。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350210
  • adc
    adc
    +关注

    关注

    98

    文章

    6429

    浏览量

    544034
  • soc
    soc
    +关注

    关注

    38

    文章

    4115

    浏览量

    217896
收藏 人收藏

    评论

    相关推荐

    如何校准adc以提高精度

    校准ADC(模数转换器)以提高精度是确保系统精确采集模拟信号的重要步骤。以下是一些常见的校准ADC以提高精度的方法: 一、硬件校准方法 外部参考电压校准 : 使用外部精密参考电压源连接
    的头像 发表于 10-31 11:10 289次阅读

    过采样提高12ADC精度

    研发、生产、制造和检测压力传感器以及提供配套服务。 正常使用压力传感器需要专门的高精度ADC采集芯片,比如M68等专用芯片。 为了减少成本普及客户的应用,可以采用普通的12bit ADC MC
    发表于 09-19 19:29

    领慧立芯LHA5657高精度32ΣΔ ADC产品介绍

    领慧立芯LHA5657高精度32ΣΔ ADC产品介绍
    的头像 发表于 08-28 16:44 358次阅读
    领慧立芯LHA5657<b class='flag-5'>高精度</b>32<b class='flag-5'>位</b>ΣΔ <b class='flag-5'>ADC</b>产品介绍

    24高精度ADC ME9603产品特点

    ME9603是一款带有前置4选1通道选择的差分输入、高精度、宽动态范围、Delta-Sigma 24数据转换器ADC。在20KSPS的转换速率下,ME9603实现了 18.6(等效
    的头像 发表于 08-19 14:32 614次阅读
    24<b class='flag-5'>位</b><b class='flag-5'>高精度</b><b class='flag-5'>ADC</b> ME9603产品特点

    OPA2626高速、高精度、低失真、16和18模数转换器(ADC)驱动器数据表

    电子发烧友网站提供《OPA2626高速、高精度、低失真、16和18模数转换器(ADC)驱动器数据表.pdf》资料免费下载
    发表于 06-19 11:24 0次下载
    OPA2626高速、<b class='flag-5'>高精度</b>、低失真、16<b class='flag-5'>位</b>和18<b class='flag-5'>位</b>模数转换器(<b class='flag-5'>ADC</b>)驱动器数据表

    混合信号 SOC 产品用户指南

    芯海混合信号 SOC 产品是指集成了 RISC MCU高精度 ADC、LED/LCD 显示模块等高系统集成的产品。芯片系统资源为特定应用领域量身定做,集高性能,高集成度,高性价比于一
    发表于 05-16 09:51

    CSM32RV003:国产高精度16ADC低功耗RISC-V内核MCU

    高精度ADC工业应用 高精度ADC高精度模数转换器,是一种能够将输入模拟信号转换为数字信号的芯片,在多种消费电子、工业、医疗和科研领域都有
    的头像 发表于 05-15 17:18 700次阅读
    CSM32RV003:国产<b class='flag-5'>高精度</b>16<b class='flag-5'>位</b><b class='flag-5'>ADC</b>低功耗RISC-V内核<b class='flag-5'>MCU</b>

    先积新品发布 ▏24,多通道,高精度,高速ADC--LTD226X

    新产品发布LTD226X24,多通道,高精度,高速Δ-Σ型ADCLTD2261是一款24,多通道,高精度,高速的Δ-Σ型ADC芯片。除了
    的头像 发表于 04-30 08:23 1081次阅读
    先积新品发布 ▏24<b class='flag-5'>位</b>,多通道,<b class='flag-5'>高精度</b>,高速<b class='flag-5'>ADC</b>--LTD226X

    介绍一款集成5通道有效精度18的ƩΔ ADC的8MCU

    HS23P6622L /HS23P6625L 是一款集成了5 通道有效精度18 的ƩΔ ADC 的8 MCU,内置了可配置的LDO。
    的头像 发表于 03-11 15:06 678次阅读
    介绍一款集成5通道有效<b class='flag-5'>精度</b>18<b class='flag-5'>位</b>的ƩΔ <b class='flag-5'>ADC</b>的8<b class='flag-5'>位</b><b class='flag-5'>MCU</b>

    32MCU高精度ADCSoC产品-SD93F系列开发指南(十)

    SD93F115 有四种工作模式,NORMAL 正常工作模式,以及 3 种低功耗模式:WAIT、 DOZE、STOP,本例将一一讲解WAIT、 DOZE、STOP模式。
    的头像 发表于 01-25 17:06 825次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b>产品-SD93F系列开发指南(十)

    32MCU高精度ADCSoC产品-SD93F系列开发指南(九)

    在开发指南(八)中,我们给大家讲解了24高精度ADC—SD ADC,本章我们再给大家讲解12高速AD
    的头像 发表于 01-12 17:14 1749次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b>产品-SD93F系列开发指南(九)

    24高精度ADC MCT1247产品介绍

    MCT1247是24高精度ADC,该芯片不仅集成了低噪声PGA、单循环数字滤波器、高精度Δ-Σ AD转换器和内部振荡器等模块,还提供了内置低漂移基准电压以及两个匹配的可编程激励电流源
    的头像 发表于 01-07 10:40 1259次阅读
    24<b class='flag-5'>位</b><b class='flag-5'>高精度</b><b class='flag-5'>ADC</b> MCT1247产品介绍

    充气泵方案中的高精度SOC芯片

    。今天我们就来聊一下关于使用高精度SOC芯片设计开发充气泵方案的过程和技术要点。 在做一个方案设计开发时,核心功能实现是我们所关注的重点。这一重点的核心又是在主控MCU上面,所以我们使用高精度
    的头像 发表于 12-26 16:09 415次阅读

    32MCU高精度ADCSoC产品-SD93F系列开发指南(八)

    在开发指南(七)中,我们简单介绍了LBT模块中低电压检测功能的测试,本章我们讲解一下24高精度SD ADC的使用方法,详细寄存器资料参考应用手册第27章节。
    的头像 发表于 12-15 17:07 1235次阅读
    <b class='flag-5'>带</b>32<b class='flag-5'>位</b><b class='flag-5'>MCU</b>和<b class='flag-5'>高精度</b><b class='flag-5'>ADC</b>的<b class='flag-5'>SoC</b>产品-SD93F系列开发指南(八)

    具备高速、高精度模拟前端的32RX MCU

    新品发布 | RENSAS瑞萨面向高端工业传感器系统推出具备高速、高精度模拟前端的32RX MCU
    的头像 发表于 11-28 13:15 445次阅读
    具备高速、<b class='flag-5'>高精度</b>模拟前端的32<b class='flag-5'>位</b>RX <b class='flag-5'>MCU</b>