小火苗 发表于 2022-7-27 10:58

【国民技术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=""> &nbsp;</p>

<p align="justify" style="">2.首先点灯,验证编译环境,下载程序功能,单片机最小系统功能是否都已就位。</p>

<p align="justify" style=""> &nbsp;</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="">&nbsp;* @brief &nbsp;Turns selected Led on or off.</p>

<p align="justify" style="">&nbsp;* @param GPIOx x can be A to G to select the GPIO port.</p>

<p align="justify" style="">&nbsp;* @param Pin This parameter can be one of the following values:</p>

<p align="justify" style="">&nbsp;* &nbsp;@arg GPIO_PIN_0~GPIO_PIN_15: set related pin on</p>

<p align="justify" style="">&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@arg (GPIO_PIN_0&lt;&lt;16)~(GPIO_PIN_15&lt;&lt;16): clear related pin off</p>

<p align="justify" style="">&nbsp;*/</p>

<p align="justify" style="">void LedOnOff(GPIO_Module* GPIOx, uint32_t Pin)</p>

<p align="justify" style="">{</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;GPIOx-&gt;PBSC = Pin;</p>

<p align="justify" style="">}</p>

<p align="justify" style=""> &nbsp;</p>

<p align="justify" style="">&nbsp;</p>

<ul>
        <li align="justify" style="">触摸按键(TSC)</li>
</ul>

<p align="justify" style=""> &nbsp;</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="">/* &nbsp;port &lt;--------&gt; &nbsp;TSC channel &nbsp;&nbsp;&nbsp;&lt;--------&gt; &nbsp;key on board</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PA4 &nbsp;&lt;--------&gt; TSC channel 0 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PA5 &nbsp;&lt;--------&gt; TSC channel 1 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB14 &lt;--------&gt; TSC channel 2 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB15 &lt;--------&gt; TSC channel 3 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD8 &nbsp;&lt;--------&gt; TSC channel 4 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD9 &nbsp;&lt;--------&gt; TSC channel 5 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD11 &lt;--------&gt; TSC channel 6 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD12 &lt;--------&gt; TSC channel 7 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC6 &nbsp;&lt;--------&gt; TSC channel 8 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC7 &nbsp;&lt;--------&gt; TSC channel 9 &nbsp;&nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC8 &nbsp;&lt;--------&gt; TSC channel 10 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC9 &nbsp;&lt;--------&gt; TSC channel 11 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC10 &lt;--------&gt; TSC channel 12 &nbsp;&lt;--------&gt; &nbsp;T6</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC11 &lt;--------&gt; TSC channel 13 &nbsp;&lt;--------&gt; &nbsp;T4</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PC12 &lt;--------&gt; TSC channel 14 &nbsp;&lt;--------&gt; &nbsp;T5</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD2 &nbsp;&lt;--------&gt; TSC channel 15 &nbsp;&lt;--------&gt; &nbsp;T3</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD4 &nbsp;&lt;--------&gt; TSC channel 16 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD5 &nbsp;&lt;--------&gt; TSC channel 17 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD6 &nbsp;&lt;--------&gt; TSC channel 18 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PD7 &nbsp;&lt;--------&gt; TSC channel 19 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB6 &nbsp;&lt;--------&gt; TSC channel 20 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB7 &nbsp;&lt;--------&gt; TSC channel 21 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB8 &nbsp;&lt;--------&gt; TSC channel 22 &nbsp;&lt;--------&gt; &nbsp;NC</p>

<p align="justify" style="">&nbsp;&nbsp;&nbsp;&nbsp;PB9 &nbsp;&lt;--------&gt; TSC channel 23 &nbsp;&lt;--------&gt; &nbsp;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=""> &nbsp;</p>

<p align="justify" style="">三、定时器PWM(TIM)</p>

<p align="justify" style="">大家都知道PWM输出就是利用的定时器输出通道,TIM定时器demo还有很多,我也偷个懒不一一验证。夸一下demo工程挺人性化的,定时器计算公式和占空比有明确的下载程序当中。</p>

<p align="justify" style="">&nbsp;</p>

<p align="justify" style=""> &nbsp;</p>

<ol start="3">
        <li align="justify" style="">实际效果</li>
</ol>

<p align="justify" style=""> &nbsp;</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="">&nbsp;</p>

<p align="justify" style=""> &nbsp;</p>

<ul>
        <li align="justify" style="">硬件原理图简介,板载功能</li>
</ul>

<p align="justify" style=""> &nbsp;</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]
查看完整版本: 【国民技术N32WB452测评】+基础功能使用