RN7211为一款ARM Cortex-M0内核的电表SOC芯片,集成有3通道用于测量计量的高精度差分输入Σ-ΔADC,更新速率7.2KHz,具有128KByte FLASH、16KByte SRAM与32KByteEEPROM,2个DMA,具备硬件自动温补的RTC,另包含1通道10Bit SAR ADC(用自带1.25V参考源)。片内自带参考源及电源系统,可2.8V-5.5V供电,最高工作频率29.4912MHz,外围电路简单。具备3路有效值,2路有功功率、无功功率、视在功率,2路瞬时有功功率、瞬时无功功率、2路有功电能、无功电能、视在电能计量,1路用户自定义功率积分通道等。主要应用于电测仪表。
在我们实际应用设计中(如传感测量、简易虚拟示波器及信号分析仪等),很多时候需要用到高精度AD,可能会采用单独的AD采集芯片配高性能ARM芯片,此时电路板尺寸增大,同时高精度AD芯片大大拉高了产品成本。而若选用RN7211芯片,将完美解决此问题,同时具备1-16倍PGA功能。本开源演示了如何利用RN7211中3路高精度AD进行信号采集,采用DMA处理方式大大节约了CPU处理资源。
开发平台搭建及程序文件下载址:http://pan.baidu.com/s/1i5Lkxdb 提取码:e8rb
开发环境可以是Keil 的MDK-ARM,也可以为IAR,与STM32系列芯片开发基本相似,因产品文件为全中文,阅读理解更加容易上手。
硬件及程序说明:
晶振:接入13、14脚的XO、XI,32.768KHz ,无需外部补偿电容,系统时钟由该时钟倍频至7.3728MHz
复位电路:12脚,接1M上拉电阻至电源、0.1uF电容至地。
其它滤波电容:1脚、10脚、24脚外部分别并10uF与0.1uF电容。
信号输入:7、8脚为一组、5、6脚为一组、3、4脚为一组,差分输入,最大信号电平 ±1V(后续计算转换参考电压为1V,精度24Bit),IO电压极限-6V至+6V。差分输入电路 有如下两种典型连接方式,连接方式示应用情况选择,下图中R22用于分压、R20、C22、R23、C23用于低通滤波,示具体设计选择。
本程序中,对应31脚、32脚P81、P80各接有一发光二极管,用于测试调试,对应指示测试程序如下截图(IO输出操作建议使用 置位及清零寄存器,如GPIO->PCSET =0x00000001;GPIO->PCCLR =0x00000001; 同时注意P35、P30等特殊IO的使用限制,LCD复用IO如P101等为无上拉推挽输出):
按键连接至53脚P10/Key0,用于启动采集测试与其它操作。
AD采集PGA倍数控制如下:
代码中SYS_PS为解锁与上锁系统配置寄存器
启动采集函数为CollectionTrigger,程序在app_rn7211.C文件中,启用DMA0进行处理。DMA0中断函数在Drive_ALLINT.C文件中。(EMU相关操作注意关闭写保护,如清除中断标记)
采样数据存于int32_t CollectionData[MaxCollectionGroup][MaxCollectionFrame] 二维数组中,MaxCollectionGroup定义最大采样点,例程里为1024即采集1024点数据,MaxCollectionFrame定义采多少组,如只采集电流A通道,此值为1,采集电流A、B通道,此值为2,采集电流A、B通道与电压通道,此值为3。如果此值为3,CollectionData数组内容为:
{{电流A,电流B,电压},{电流A,电流B,电压},……}
CollectionStatus表示当前采样状态标记 -1代表错误 1代表采样成功 2代表转换成功 3代表校正成功
CollectionChange函数将采样的24位数转换对其到32位
本程序使用电表相关处理时7.2KHz自动启动AD采集完成后中断触发DMA实现AD采集。若要以其它频率采集,建议可定时器触发DMA读取AD值实现。
立创社区发表如下:
http://club.szlcsc.com/article/details_D94A5D0CAE724A3F8FC89DAC572BF9FE_0_1_0_1_1.html