您的位置 首页 电子技术

带32位MCU和高精度ADC的SoC产品—-SD93F系列开发指南(一)

带32位MCU和高精度ADC的SoC产品—-SD93F系列开发指南(一)-示例程序是以SD93F115-JBS芯片编写,包含了按键中断、RTC中断、SD ADC、SAR ADC、RTC、DAC、低压检测、LCD显示、休眠测试等多个基础功能综合的一个程序,配合按键中断进入不同的子程序进行演示。

前 言 01

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

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

程序描述 02

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

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

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

main 函数 03

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

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063848-621727f8b556e.png

图3-1 main函数

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

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

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063849-621727f9cb0fc.png

图3-2 系统初始化函数

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

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063850-621727fa88bca.png

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

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

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063851-621727fb6ea93.png

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

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

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063852-621727fc395ba.png

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

这里直接调用库函数,将独立看门狗预分频器设置8分频,溢出时间设置为23040,最后开启看门狗选择正常模式工作,待机模式不工作,在此配置下计算的复位时间t=5.76秒。因为开启了独立看门狗,但又不希望程序在正常运行时发生复位,所以需要在正常运行的程序期间加入‘喂狗’操作,防止芯片在正常情况下复位,尤其是在执行循环过程中需要特别注意进行‘喂狗’操作,建议溢出时间不要设的太小。独立看门狗初始化后,还对按键中断、PWM、SD ADC、SAR ADC、UART、RTC和LCD显示等功能也进行了初始化,在后面的章节会详细介绍。为了更直观的看到程序是否正常运行,先在LCD屏上显示‘123456’,然后用一个GPIO做数字输出来驱动外部LED灯进行闪烁,GPIO初始化如下图3-6:

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063852-621727fcdaa2c.png

图3-6 GPIO初始化函数

首先打开GPIO外设时钟使能,将P83口设置为数字输出,配置为大电流模式(最大电流可以达到12mA),为避免其他GPIO引脚悬空造成未知影响,将所有没有使用的GPIO全部配置为输入上拉模式。宏定义了P83引脚的输出,使得控制LED灯的状态更清楚,然后在main函数的while循环里每隔50ms把P83状态翻转,即可控制LED灯的亮灭,最终程序运行PCB板的初步现象就是LCD显示‘123456’,LED灯不停闪烁,等待按键中断的来临。

http://news.vvfanli.com/wp-content/uploads/2022/02/20220224063854-621727fe15f97.png

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

总 结 04

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

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 厂商供稿

为您推荐

智慧路灯照明系统的应用为智慧城市的发展建设添砖加瓦

智慧路灯照明系统的应用为智慧城市的发展建设添砖加瓦

智慧路灯照明系统的应用为智慧城市的发展建设添砖加瓦-夜间的路灯不仅照亮了黑暗的街道,而且照亮了回家的道路。从街上望去,闪烁的路灯发出暖光,指引着我们家的方向。城市里的路灯就像“守护者”,给长途旅行回来的游客带来了极大的安全感。 当今,路灯智能控制时代的到来,极大地促进了传统路灯的人工机械化运行。虽然对此感到兴奋,但我们不禁要问:随着路灯智能控制的早期到来,除了改善路灯的运行模式,还能带来什么? 为城市交通提供安全保障 城市公共照明系统中的智能路灯在每个路

晶振在五种不同行业中的应用说明

晶振在五种不同行业中的应用说明-晶振在五种不同行业的应用-由TST嘉硕代理KOYU光与电子

几种不同的物联网控制APP模式

本文就简单介绍当前几种物联网控制APP模式,让大家了解几种不同的技术路线。\” />

<meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1

苹果稳坐全球可穿戴设备数量首位,占据日本市场超7成份额

苹果稳坐全球可穿戴设备数量首位,占据日本市场超7成份额

苹果公司占据2021年日本第四季度可穿戴设备71.5%份额,占据全球可穿戴设备市场34.9%份额。\” />

<meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1

如何用GPUDirect存储器如何缓解CPU I / O瓶颈

除了使用 GPUs 而不是 CPU 加快计算的好处外,一旦整个数据处理管道转移到 GPU 执行,直接存储就起到了一个力倍增器的作用。这一点变得尤为重要,因为数据集大小不再适合系统内存,而且 GPUs 的数据 I / O 增长成为处理时间的瓶颈。当人工智能和数据科学继续重新定义可能的艺术时,启用直接路径可以减少甚至完全缓解这个瓶颈。\” />

<meta http-equiv=X-UA-Compatible content=\"IE=edge,chrome=1

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部