【国民技术N32WB452测评】+基础功能使用
<p align="center"><b>【国民技术N32WB452测评】</b><b>+</b><b>基础功能使用</b></p><p align="justify" style="">N32WB452系列是基于32位ARM Cortex-M4F + Cortex-M0双内核的BLE5.0 MCU芯片,TX/RX功耗3.5mA,发射功率+3dBm, 接收灵敏度-94dBm,主频144MHz,支持浮点运算和DSP指令,内置512KB Flash,144KB SRAM,集成7xU(S)ART,4xI2C,3xSPI,2xCAN 2.0B, 1x USB 2.0 FS Device,1xSDIO,数字视频接口,2x12bit 5Msps ADC,2x1Msps 12bit DAC,支持多达18通道电容式触摸按键,内置密码算法硬件加速引擎。</p>
<p align="justify" style="">根据芯片数据手册介绍,其芯片功能甚是强大,首先使用一下基础功能,gpio、pwm、adc、spi、触摸按键等,熟悉下其软件开发的思路,学习设计软件开发思维,希望接下来的学习当中有很多收获。</p>
<ul>
<li align="justify" style="">LED点灯</li>
</ul>
<ol>
<li align="justify" style="">其例程代码结构非常简洁,多余没有用到的底层驱动也没有加载,软件结构也是主流的结构,很容易上手。<b>N32WB452系列快速开发指南</b>文件当中对整体的软件架构有明确的说明,如图所示:</li>
</ol>
<p align="justify" style=""> </p>
<p align="justify" style="">2.首先点灯,验证编译环境,下载程序功能,单片机最小系统功能是否都已就位。</p>
<p align="justify" style=""> </p>
<p align="justify" style="">3.实际效果如图所示</p>
<p align="justify" style="">LED1红灯常亮,LED2白色灯取反函数控制,LED3,LED4是开关量控制函数,但是其引脚控制函数是自定义的,下面的函数很有意思,这之前开发当中也没有遇到此用法的应用。</p>
<p align="justify" style="">/**</p>
<p align="justify" style=""> * @brief Turns selected Led on or off.</p>
<p align="justify" style=""> * @param GPIOx x can be A to G to select the GPIO port.</p>
<p align="justify" style=""> * @param Pin This parameter can be one of the following values:</p>
<p align="justify" style=""> * @arg GPIO_PIN_0~GPIO_PIN_15: set related pin on</p>
<p align="justify" style=""> * @arg (GPIO_PIN_0<<16)~(GPIO_PIN_15<<16): clear related pin off</p>
<p align="justify" style=""> */</p>
<p align="justify" style="">void LedOnOff(GPIO_Module* GPIOx, uint32_t Pin)</p>
<p align="justify" style="">{</p>
<p align="justify" style=""> GPIOx->PBSC = Pin;</p>
<p align="justify" style="">}</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> </p>
<ul>
<li align="justify" style="">触摸按键(TSC)</li>
</ul>
<p align="justify" style=""> </p>
<ol>
<li align="justify" style="">软件结构,Dome工程使用了串口打印,定时器,TSC,和GPIO四种应用层驱动文件。</li>
</ol>
<p align="justify" style="">代码查阅分析,其定时器的主要功能是定时检测触摸按键是否有动作。其主循环为10ms检测一次,定时器中断函数还有按键触发检测函数的调用检测的频率高10ms/50,我想应该是用来做防抖处理,按照此方法还可以做按键的短按和长按判断等功能。</p>
<p align="justify" style="">触摸按键TSC通道有23路:</p>
<p align="justify" style="">// The following is the corresponding relationship of port, TSC channel, pulse data and key of this demo.</p>
<p align="justify" style="">/* port <--------> TSC channel <--------> key on board</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PA4 <--------> TSC channel 0 <--------> NC</p>
<p align="justify" style=""> PA5 <--------> TSC channel 1 <--------> NC</p>
<p align="justify" style=""> PB14 <--------> TSC channel 2 <--------> NC</p>
<p align="justify" style=""> PB15 <--------> TSC channel 3 <--------> NC</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PD8 <--------> TSC channel 4 <--------> NC</p>
<p align="justify" style=""> PD9 <--------> TSC channel 5 <--------> NC</p>
<p align="justify" style=""> PD11 <--------> TSC channel 6 <--------> NC</p>
<p align="justify" style=""> PD12 <--------> TSC channel 7 <--------> NC</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PC6 <--------> TSC channel 8 <--------> NC</p>
<p align="justify" style=""> PC7 <--------> TSC channel 9 <--------> NC</p>
<p align="justify" style=""> PC8 <--------> TSC channel 10 <--------> NC</p>
<p align="justify" style=""> PC9 <--------> TSC channel 11 <--------> NC</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PC10 <--------> TSC channel 12 <--------> T6</p>
<p align="justify" style=""> PC11 <--------> TSC channel 13 <--------> T4</p>
<p align="justify" style=""> PC12 <--------> TSC channel 14 <--------> T5</p>
<p align="justify" style=""> PD2 <--------> TSC channel 15 <--------> T3</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PD4 <--------> TSC channel 16 <--------> NC</p>
<p align="justify" style=""> PD5 <--------> TSC channel 17 <--------> NC</p>
<p align="justify" style=""> PD6 <--------> TSC channel 18 <--------> NC</p>
<p align="justify" style=""> PD7 <--------> TSC channel 19 <--------> NC</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> PB6 <--------> TSC channel 20 <--------> NC</p>
<p align="justify" style=""> PB7 <--------> TSC channel 21 <--------> NC</p>
<p align="justify" style=""> PB8 <--------> TSC channel 22 <--------> NC</p>
<p align="justify" style=""> PB9 <--------> TSC channel 23 <--------> NC</p>
<p align="justify" style="">*/</p>
<ol start="2">
<li align="justify" style="">实际效果</li>
</ol>
<p align="justify" style="">四个按键与4个LED点对应,且有串口打印输出。</p>
<p align="justify" style=""> </p>
<p align="justify" style="">三、定时器PWM(TIM)</p>
<p align="justify" style="">大家都知道PWM输出就是利用的定时器输出通道,TIM定时器demo还有很多,我也偷个懒不一一验证。夸一下demo工程挺人性化的,定时器计算公式和占空比有明确的下载程序当中。</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> </p>
<ol start="3">
<li align="justify" style="">实际效果</li>
</ol>
<p align="justify" style=""> </p>
<p align="justify" style="">四、ADC</p>
<p align="justify" style="">最多2个12位5Msps采样率的逐次比较型ADC,支持单端输入和差分输入。</p>
<p align="justify" style="">ADC软件结构希望官方统一一下,在使用TSCdemo工程的时候,tim.c等文件命名是单独独立出来的,而ADC相关工程的配置程序和逻辑控制程序都是main.c文件当中。很直观的感觉就是多个工程师合作开发然后没有统一开发思路,现在就比较担心国民技术厂家程序的可靠性了。</p>
<p align="justify" style=""> </p>
<p align="justify" style=""> </p>
<ul>
<li align="justify" style="">硬件原理图简介,板载功能</li>
</ul>
<p align="justify" style=""> </p>
<ol>
<li align="justify" style="">lcd使用的是spi接口通讯</li>
<li align="justify" style="">复位和唤醒按键,可是测试休眠机制</li>
<li align="justify" style="">可调电阻,配合pwm脉冲输出,使用旋钮电阻调控pwm脉冲</li>
<li align="justify" style="">USB接口,USB2.0全速设备技术规范 (12Mbit/s)</li>
<li align="justify" style="">Nslink接口,相当于jlinkV9.0 有串口功能</li>
<li align="justify" style="">纽扣电池,RTC时钟电路完整</li>
<li align="justify" style="">Flash芯片型号为25Q128</li>
<li align="justify" style="">温湿度传感器芯片,HDC2010采用超紧凑的集成设计,很秀珍。</li>
<li align="justify" style="">三轴加速度计加速度传感器QMA7981,</li>
<li align="justify" style="">DVP摄像头接口</li>
<li align="justify" style="">TSC触控按键</li>
<li align="justify" style="">蜂鸣器接口</li>
</ol>
页:
[1]