前言
本开发指南将手把手帮工程师们了解芯片的各个模块,对照手册熟悉各个模块的寄存器配置。同时,分享一些常见的错误用法,助您规避误区,从而提高开发效率。
芯片介绍
Part.1SD82F46X芯片基于8051 CPU实现,为8位MCU系统,系统主频最高为32MHz。芯片内含四个运放和一个24bits sigma-deltaADC、两个12bits DAC、正弦波产生和整流电路等模块,此些模块专门为HCT功能电路设计,主要用在血糖仪、血压计及其有类似应用需求的领域。
功能框图
图1 SD82F46X功能框图
编程介绍
示例程序是实现SD82F46X芯片串口通信功能,包含了RCC时钟配置、电源模块配置、UART初始化、中断系统配置。
编程其主体思路:先对芯片进行系统初始化,再对需要使用的功能进行配置,然后进入主循环实现串口通信功能。
函数分析
main函数的整体框架,如图2:
图2 main函数
如图2所示,main函数首先运行的是系统初始化函数Initialization(),初始化完成后执行主程序,示例中主程序较简单,负责发送串口接收来的数据。
图3 RCC初始化函数
图4 电源初始化函数
内部RCC时钟IHRC和ILRC出厂前已校准,用户无需再次手动改写校准值。图3 RCC初始化函数设置了IHRC和ILRC使能,开启内部时钟,实际内部时钟已默认开启,然后初始化了系统时钟,系统时钟源选择IHRC,分频系数8分频。图4对内部数字电源进行了初始化,设置成1.5V并使能。
图5 UART初始化函数图5为UART初始化函数,定义结构体变量UART_InitStruct,配置开启外设时钟,否则无法进行寄存器设置。使用UART功能,必须要进行IO口复用配置,将复用功能配置成UART,并且TXD和RXD要关闭IO上拉功能。后面进行UART相关参数配置,设置波特率UART_BaudRate=115200、校验位UART_Parity、UART模式为接收发送,然后调用UART_Init(UART_TypeDef*UARTx,UART_InitTypeDef* UART_InitStruct)库函数,将前面的初始化值写入相应寄存器。最后使能UART0模块和开启UART0接收中断。
图6 VIC初始化函数
图6为VIC初始化函数,开启UART0对应的中断向量号、设置中断优先级并使能。最后开启内核总中断。
图7 UART0中断服务函数图7为UART0中断服务函数,因为UART初始化中开启了接收中断功能,所以只要RXD接收到了数据,程序就会进入中断服务函数进行接收处理。Main函数主循环中将接收到的数据发送出来,注意这里是通过HEX格式进行发送。发送完一笔后,等待下一次接收,循环发送。
总结
本文介绍了SD82F46X UART功能模块的使用,了解其编程逻辑和工作原理,其他功能将会在后续章节逐一分享。