这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EMF8BB52单片机】工业智能控制研发(熟悉编译软件

共9条 1/1 1 跳转至

【EMF8BB52单片机】工业智能控制研发(熟悉编译软件

菜鸟
2021-12-09 21:40:25   被打赏 52 分(兑奖)     打赏

试用项目:工业智能控制研发

支线最低成本高性能工业智能模块,划整为零法便于后期维护,打破高难技术服务瓶颈,降低维修成本,节省检修时间。

1639056606729263.jpg

进度汇总:

1、开箱

2、编译软件安装

3、Simplicity Studio软件的使用

4、BB52 Explorer Board Kit  图文介绍

5、EFM8BB52F32I-QNF32单片机简介

6、单片机开发第一弹:驱动所有I/O口点亮LED(查询资料)

7、单片机开发第一弹:点亮LED(附程序压缩包)

8、单片机开发第二弹:串口UART0调试(资料讲解&串口调试终端&程序包)


未完待续....



菜鸟
2021-12-09 21:41:41   被打赏 10 分(兑奖)     打赏
2楼

野生开箱,暴力解决,获得芯科最新开发板一块,超短数据线一根!

1639405321740381.jpg

1639405323939827.jpg

1639405331652820.jpg

1639405329277885.jpg

1639405323383802.jpg

1639406758354480.jpg


菜鸟
2021-12-09 21:42:14   被打赏 20 分(兑奖)     打赏
3楼

因为这是Silicon Labs(芯科科技)最新推出的芯片试用开发板,中文资料有限,昨两天做梦都在补习英语。然并卵,因为没有单独的芯片包下载,所以没办法使用我们所熟悉的keil之类的编程软件,最后妥协,下载了芯科科技官方编译软件,如下:

1639406128997038.png

然后被这个软件折腾了两个晚上,终于摸索了冰山一角,哎,先洗洗睡吧,皮友们!!!

--------------------------------------

---------------------------------------

芯科科技官方编译软件下载地址

-------------------------------------

-------------------------------------

下面给大家分享一下这个软件在EFM8BB52开发板过程中的使用经历。

-------------------------------------

首先,Silicon Labs(芯科科技)的官方开发软件完全免费,对所有陌生用户开放性试用,

这一点给个赞!!!

搜狗截图20211214224839.jpg安装完成出现欢迎界面,陌生感席卷而来,接下来绞尽脑汁寻找熟悉的英文字眼。。。。。

不过先不着急,可以找到这个按钮QQ截图20211216213629.png,点进去,然后出现了如下界面:

QQ截图20211216213708.png

这个开发软件由于集成了Silicon Labs(芯科科技)所有产品的功能开发需要,所以数据包有些庞大,可选择性安装固件,也可以一股脑安装全家桶,当然我选择了后者,省事!!!

---------------------------------------------

接下来点开开发环境QQ截图20211216220144.png,起步出发!!(刚认识阶段不必太在意细节,直奔主题才是最有效的相处模式

QQ截图20211216215031.png

插上开发板,全家桶固件包啥都在里面了,所以“自己人”一下就认出来了。想好了第一个程序怎么写吗?是不是有点慌!!!固件库在哪里?我要#inchlude啥呢?芯片资料都是英文看不懂,那函数固件库怎么写?时钟?中断?特殊寄存器?引脚定义?。。。。。。。。砰!!!!

(古人云:万事俱备,只欠东风。所以即将迈出第一步的我们总是考虑东西南北,以为一身戎装,马到成功。可是。。。。。。。已经2021年了呀朋友们,捷足先登啊,先睹为快啊,先下手为强啊)


菜鸟
2021-12-09 21:42:44     打赏
4楼

不要胡思乱想了,点击QQ截图20211219122853.png开始给开发板注入灵魂吧!

------------------------------

QQ截图20211219122921.pngQQ截图20211219122943.pngQQ截图20211219123016.pngQQ截图20211219123130.pngQQ截图20211219123147.pngQQ截图20211219123632.pngQQ截图20211219123725.png

-------------------------------------------------

----------------------------------------------------

后记:

         芯科这款Simplicity  Studio开发软件功能过于全面,以至于我花了数天时间去了解它

仍旧是一脸陌生感。所以也不建议同学们在初阶段花太多时间在软件上,后期如果对芯科的

其它产品有兴趣的话,可以再好好的去学习熟料的运用这款开发工具也不迟。而接下来,我

们该好好的去认识一下这款2021年问世的超迷你单片机EFM8BB52F32I-QNF32了,看看它

小小的身躯,是不是真的像蜜蜂那般,拥有极快的速度,全面的能力,可以稳定而精准的动

作自如呢?让我们拭目以待吧。。。。。。。。。。。。。。。。。。。。。。未完待续!



菜鸟
2021-12-24 22:53:45     打赏
5楼

接下来我们先大致了解一下EFM8BB52 Busy Bee Explorer Kit Board (BRD2701A Rev A01)这款开发板

QQ截图20211224224751.png

仿真芯片和EFM8BB52连接图.pngQQ截图20211224224828.pngQQ截图20211224224938.png

BB52 Explorer Kit试用指南.pdf    开发板介绍文档,不过是是英文的,大家可主观图表

BRD2701A-A01原理图.pdf          开发板电路原理图



相信有电路基础和单片机基础知识基础的同学们应该阅读起来不会太困难,有什么不懂的地方可

回复,知无不言言无不尽。


菜鸟
2021-12-24 23:40:00     打赏
6楼

然后再了解一下EFM8BB52F32I-QNF32这款微型单片机

EFM8BB52 Data Sheet.pdf       数据手册

EFM8BB52参考手册.pdf           说明书



想要全面的了解一款单片机,阅读说明手册是最直接的方法了,不过呢EFM8BB52这款2021年面世的单片机还没来得及翻译说明书,所以英文版的产品手册看起来着实让人头大。但是同学们不必太过困恼,解决困难的最好办法就是化整为零,各个击破。我们先每次定一个小目标,通过一个个的小目标来一点点的了解它,最后融会贯通,就能实现这款单片机的多功能多领域运用了。


菜鸟
2021-12-25 12:44:10     打赏
7楼

好了,使用一款单片机能想到的最简单功能就是点灯了,书面语:驱动I/O口。下面我们开始单片机开发第一个目标:驱动所有I/O口!表现形式当然就是点亮LED灯咯。

先看看说明书里面关于I/O的资料吧,贴心的我大概翻译了一下:

Digital and analog resources are externally available on the device’s multi-purpose I/O pins. Port pins P0.0-P2.7 can be defined as general-purpose 


I/O (GPIO) or assigned to one of the internal digital resources through the crossbar or dedicated channels. Port pins P0.0-

P3.1 can be assigned to an analog function. Port pins P3.0 to P3.7 can be used as GPIO. Additionally, the C2 Interface Data signal

(C2D) is shared with P2.0 or P3.7, depending on the package option. Not all pins are present in all devices and this is dependent on the

chosen device package(s). The pinout differences are covered in the device datasheet.

The port control block offers the following features:

• Up to 29 multi-function I/O pins, supporting digital and analog functions.

• Flexible priority crossbar decoder for digital peripheral assignment.

• Two drive strength settings for each port.

• State retention feature allows pins to retain configuration through most reset sources.

• Two direct-pin interrupt sources with dedicated interrupt vectors (INT0 and INT1).

• Up to 24 direct-pin interrupt sources with shared interrupt vector (Port Match).

IO端口特性:

数字和模拟资源都可在设备的多用途I/O引脚外部使用。端口引脚P0.0-P2.7可以定义为通用I/O (GPIO),也可以通过交叉条或专用通道分配给内部的数字资源之一。港口别针P0.0 -P3.1可以指定一个模拟函数。接口引脚P3.0 ~ P3.7可作为GPIO。此外,C2接口数据信号(C2D)由P2.0或P3.7共享,具体取决于资源包选项。并非所有的引脚都存在于所有的设备中,这取决于所选择的设备包。在设备数据表中涵盖了引脚的差异。

端口控制块提供以下功能:

*多达29个多功能I/O引脚,支持数字和模拟功能。

*灵活的优先交叉****数字外设分配

*每个端口有两个驱动器强度设置

*状态保持特性允许引脚通过大多数重置源保持配置

*两个直接引脚中断源,具有专用中断向量(INT0和INT1)

*最多24个直接引脚中断源,共享中断矢量(端口匹配)



Port I/O Modes of Operation

Port pins are configured by firmware as digital or analog I/O using the special function registers. Port I/O initialization consists of the

following general steps:

1. Select the input mode (analog or digital) for all port pins, using the Port Input Mode register (PnMDIN).

2. Select the output mode (open-drain or push-pull) for all port pins, using the Port Output Mode register (PnMDOUT).

3. Select any pins to be skipped by the I/O crossbar using the Port Skip registers (PnSKIP).

4. Assign port pins to desired peripherals.

5. Enable the crossbar (XBARE = 1).

端口I/O运行模式

端口引脚被固件配置为数字或模拟I/O使用特殊的功能寄存器。端口I/O初始化包括以下一般步骤:

1.使用端口输入模式寄存器(PnMDIN)为所有端口引脚选择输入模式(模拟或数字)。

2.使用端口输出模式寄存器(PnMDOUT)为所有端口引脚选择输出模式(开路或推挽)

3.使用端口跳过寄存器(PnSKIP)选择I/O交叉栏跳过的任何引脚

4.将端口引脚分配到所需的外围设备

5.使能横杆(XBARE = 1)

注意:这里需要补充一点,因为这款单片机带2个模拟比较器,且可以自行分配到某个I/O口,所以I/0端口初始化的时候需要进行相关的设置,于是有了第6步

6.使用端口比较寄存器(PnMASK)和端口比较寄存器高低电平设置寄存器(PnMAT)为电平输入信号进行比较产生中断信号



看完以上说明是不是觉得头大,怎么这么麻烦呢?以前学汇编51单片机的时候不是直接#include  <REG52.H>        MOV  P1, 0x00;    就可以驱动I/0口输出低电平吗???拜托!都2021年了呀,8位单片机虽然还是用的51内核,但是功能已经强大太多太多,所以我们需要选择性的使用某些功能的时候就得初始化单片机,通俗的说就是得设置I/O相关的PnMDIN、PnMDOUT、PnSKIP、XBARE、PnMASK、PnMAT特殊功能寄存器。

那么该怎么设置呢,不急不急,我们继续查看单片机说明书:

SFR Paging

The CIP-51 features SFR paging, allowing the device to map many SFRs into the 0x80 to 0xFF memory address space. The SFR

memory space has 256 pages. In this way, each memory location from 0x80 to 0xFF can access up to 256 SFRs. The EFM8BB52

devices utilize multiple SFR pages. All of the common 8051 SFRs are available on all pages. Certain SFRs are only available on a

subset of pages. SFR pages are selected using the SFRPAGE register. The procedure for reading and writing an SFR is as follows:

1. Select the appropriate SFR page using the SFRPAGE register.

2. Use direct accessing mode to read or write the special function register (MOV instruction).

The SFRPAGE register only needs to be changed in the case that the SFR to be accessed does not exist on the currently-selected

page. See the SFR memory map for details on the locations of each SFR.

特殊寄存器地址页

CIP-51具有SFR分页功能,允许设备将多个SFR映射到0x80到0xFF内存地址空间。SFR内存空间有256页。这样,从0x80到0xFF的每个内存位置最多可以访问256个sfr。EFM8BB52设备利用多个SFR页面。所有的通用8051 SFRs都可以在所有页面上找到。某些sfr仅在页面的一个子集上可用。使用SFRPAGE寄存器选择SFR页面。读取和写入SFR的过程如下:

1.使用SFRPAGE寄存器选择适当的SFR页面

2.使用直接访问方式读写特殊功能寄存器(MOV指令)

只有在当前选择的页面上不存在要访问的SFR时,才需要更改SFRPAGE寄存器。关于每个SFR位置的详细信息,请参阅SFR内存映射。

特殊寄存器地址页

Table 3.3. Special Function Registers by Name

QQ截图20211225125614.png

上面有提到I/O端口运行的必备条件之一是XBARE=1,所以我们就需要对Crossbar使能了,查询单片机说明书,找到了是在特殊寄存器XBR2的第6位设置。



菜鸟
2022-01-02 14:54:41     打赏
8楼

接下来我们进入实践环节:

Schematic_BB52-LED_2022-01-02.png

如图,把所有的PnIO口经过限流电阻接上3mm草帽发光二极管,经计算,5V电压下单只发光二极管电流仅为2mA左右,而我们的芯片单脚承受电流高达20mA,所有管脚承受电流之和也高达200mA,所以完全不用担心点亮所有的LED电流是否过大烧坏芯片。

这里我们用的是灌电流方式来驱动LED,也就是说I/O口为低电平是点亮,那相关的特殊寄存器要怎么设置呢,不急不急,先来看看下面这张图:微信截图_20220102153413.png

稍微看一下这张图,可以发现要是I/O输出低电平比输出高电平要简单的多,只需要使靠近电源地GND的那个MOS管导通就可以了.而这个MOS管控制端连接着一个逻辑异或开关,要让这个逻辑开关输出高电平的话需所有条件为0才可以。因为是开关控制,我们设置的时候只选其中一种条件来控制,而其余的条件都设置为0(注意其中XBARE和PxMDIN.x是通过非门控制逻辑异或开关的,所以要使逻辑控制为0的话设置中XBARE=1,PxMDIN.x=1).



EFM8BB52_Blinky.zip  C语言程序文件



下载程序文件,放入一个文件夹内,解压。打开simplicity studio v5,选择程序所在的文件夹导入,然后编译,调试,就可以驱动LED了:

是不是很简单呢,你学会了吗。



。。。。。。。。。。。。。。。。。未完待续,敬请期待!!


菜鸟
2022-01-15 15:01:53     打赏
9楼

接下来讲解一下这款单片机的串口。


EFM8BB52这款单片机设计有两个串口,UART0(P0.4&P0.5)和UART1(P2.2&P2.3),除了默认输出引脚外,还可以通过CLU0,1,2路由到其它输出IO口,可以说是灵活便捷。串口具体的初始化设置依然是参照51单片机的经典设计,不过因为功能有所升级,UART1设置要复杂的多的多,鉴于时间有限,精力不足,只能给大家介绍下UART0了。后续如果更多的开发需求,大家可以自行好好研究一下UART1设计的精妙之处,到时候不妨与我等志同道和之士分享一番。


EFM8BB52-UART0.doc


上面是芯片手册里面关于UART0串口的介绍,已经为大家翻译成了中文,放心下载阅览。咋一看UART0的介绍内容还不少,为了避免大家看着犯头痛,我给大家总结一些有用的点:

1.UART使用两个信号(TXRX)和一个预定的固定波特率来提供与其他设备的异步通信。

   UART模块提供以下特性:

l   异步传输和接收。

l   波特率高达syclk /2(发送)syclk /8(接收)

l   8位或9位数据。

l   自动启动和停止。

l   单字节FIFO发送和接收

2.UART0波特率由定时器1生成,8位自动加载。TXRX定时器溢出都除以2,以生成TXRX波特率。

定时器1应该被配置为8位自动重新加载模式(模式2)。定时器1的重新加载值和预分频器应该被设置,以使溢出发生在期望的UART0波特率的两倍。UART0波特率为定时器1溢出率的一半。

3.要启用数据接收,固件应该将REN位写入1

4.UART0中断启用的情况下,UART0中断标志RI(或TI)不会被硬件清除。它们必须由软件手动清除,允许软件确定UART0中断的原因(发送完成或接收完成)

5.默认情况下,UARTRX0输入是通过crossbar路由的。也可以将RX输入路由到CLU0的输出,CLU1CLU2。该函数由寄存器UART0PCF中的RXSEL字段选择。


大致浏览以上关键信息后,我们终于知道要想是UART0串口工作,除了设置P0.4,P0.5 IO口相关寄存器以外还需要设置以下几个寄存器:

  1. 1.CLKSEL  系统时钟选择寄存器

  2. 2.CKCON0   系统时钟控制设置寄存器

  3. 3.TMOD      定时器计数器模式设置寄存器

  4. 4.SCON0    串口控制设置寄存器

是不是感觉超简单呢!不急不急,还漏了东西。既然涉及串口收发,那么波特率的计算与定时器初始值得设定必不可少了。为了简化计算,我已经把分频器,倍频功能都舍弃了,定时器(必须选用T1)选用了工作模式2(8位计数且自动重装初值)。然后根据有关波特率资料整理出来了下面这个公式:

微信截图_20220115173812.png


波特率了解后接下来我们看看涉及的相关特殊寄存器详细介绍图表吧:



CKCON0(3).pngCKCON0 (4).png



由于这款开发板集成有J-LINK调试芯片,而调试芯片也自然连接了在了UART0串口上面,所以我们不需要外接任何元器件即可直接进行串口通信调试,简直是棒极了有没有!!下面呈上串口调试工具串口超级终端和UART0调试程序:

超级终端_hyper_terminal_latest(中文).zip

EFM8BB52_UART.zip  串口传输模式为中断模式

注意:程序中TH0=0x96,那么通过波特率计算公式得出波特率为115200





共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]