【经验】如何正确使用8位MCU的PortMatch功能


SILICON LABS的很多8位MCU(C8051和EFM8)都具有PortMatch功能,此功能允许一个或多个端口IO引脚上的逻辑电平变化触发系统事件。例如GPIO的输入电平与配置的电平不匹配时可以触发中断事件,并且这一功能可以将MCU从Sleep模式唤醒。但是很多工程师在使用PortMatch功能时,总会遇到很多问题,本文为大家讲解如何正确使用PortMatch功能,MCU选用低功耗的EFM8SB系列为例。
端口PortMatch的功能通过设置PnMASK寄存器的相关位来启动,如配置P0.0引脚使能PortMatch功能的语句P0MASK |= 0x01;。另外,如果引脚模式被配置成了模拟则PortMatch功能无法使用,因此寄存器PnMDIN和PnMDOUT的相关位需要配置引脚作为数字输入(即open-drain)模式P0MDIN |= 0x01; P0MDOUT &= 0xFE。 然后需要配置的是引脚匹配的电平值,这是用于设置引脚是高电平还是低电平触发事件的。需要注意的是,PortMatch事件是引脚的电平与设置的电平值不一致时触发,因此配置P0.0是低电平触发,需要配置P0MAT |= 0x01;。如需产生PortMatch中断,需要使能PortMatch中断,将寄存器EIE1的EMAT位置1,并使能总中断EA。若只是用PortMatch功能来唤醒MCU,则不必一定开启中断,只要PortMatch事件被触发就可以唤醒MCU。使用图形化配置如下:
上面配置后,PortMatch事件是可以正确触发了,但在实际应用中,还是会遇到一些问题,现总结如下。
1、PortMatch中断函数的入口只有一个,即所有IO触发PortMatch中断时,都会执行同一个中断服务函数,当配置多个IO具有PortMatch中断时,如何判断此次中断是哪一个IO触发的?
在中断服务函数读取Pn寄存器来判断是哪个引脚的电平发生变化触发的,这里还是以P0.0引脚在低电平触发为例,假设P0.0外部是按键来控制电平,按键不按时是高电平,按键按下时是低电平。代码实现如下:
SI_SBIT (Pin0_0,SFR_P0,0); //定义P0.0为Pin0_0
SI_INTERRUPT (PMATCH_ISR, PMATCH_IRQn)
{
if(Pin0_0 = 0)//判断P0.0是不是低电平,因为低电平触发中断,如果是,则执行相关内容
{}
}
2、PortMatch触发是电平触发,当开启中断,电平不匹配时,则会一直触发中断,代码会循环地执行中断函数。如何才能实现类似边沿触发的方式?
这可以在中断函数里通过重新配置PnMAT寄存器来实现。例如按键按下低电平触发,那么就将P0.0改成低电平匹配,这样中断服务函数执行完后,就不会再次执行。当按键松开IO电平变高电平时,会再次执行中断服务函数,将P0.0再改回低电平匹配。这就相当于实现了边沿触发,上升沿和下降沿各执行中断一次。代码实现如下:
SI_INTERRUPT (PMATCH_ISR, PMATCH_IRQn)
{
uint8_t P0_sample = P0;
uint8_t P1_sample = P1;
P0MAT = P0_sample;
P1MAT = P1_sample;
}
3、配置低电平触发唤醒MCU,寄存器配置和电路设计需要注意的地方是什么?
如果是低电平触发,表示这个引脚平时需要保持高电平状态。寄存器配置如上面所述,将此引脚配置成数字开漏模式(PnMDIN和PnMDOUT),内部电平锁存值配置成高(Pn),即内部下拉关闭,匹配电平配置成高电平(PnMAT),使能匹配功能即可(P0MASK)。开漏模式的引脚内部上拉无法使用,EFM8SB内部有若上拉功能,但是为了降低功耗,建议电路设计上使用较大阻值的外部上拉电阻,关闭内部若上拉功能(XBR2的WEAKPUD位置1)。
4、配置高电平触发唤醒MCU,寄存器配置和电路设计需要注意的地方是什么?
如果是高电平触发,表示这个引脚平时需要保持低电平状态。寄存器配置方面,将此引脚配置成数字开漏模式(PnMDIN和PnMDOUT),内部电平锁存值配置成高(Pn),即内部下拉关闭,匹配电平配置成低电平(PnMAT),使能匹配功能即可(P0MASK)。需要注意的是内部电平锁存值需要配置成高电平,因为如果配置成低电平的话,当外部将此引脚拉高时,消耗的电流会比较大。外部驱动能力强的话,还可以将引脚电平拉高,如果驱动能力弱的话,就无法将引脚电平拉高了,从而无法唤醒MCU。电路设计上建议外部使用较大阻值的外部下拉电阻,关闭内部若上拉功能(XBR2的WEAKPUD位置1)。
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 1
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【经验】8位MCU C8051F350完美替换C8051F352,解决缺货烦恼
24位ADC的C8051F350与16位ADC的C8051F352是同一系列的芯片,芯片的封装及引脚的分配是完全相同的,所以在硬件上可以完全替换。
【产品】小蜜蜂8位MCU助您轻松迎接物联网时代
Silicon labs推出了一款集小封装和高性价比于一身的多用途8位MCU EFM8BB1,可轻松替代普通8051家族的MCU产品。
【技术】 EFM8SB2系列8位MCU复位源详解
EFM8SB2系列是Silicon Labs最节能的8位MCU之一,其120uA/MHz 运行功耗,0.5uA 睡眠电流,可以极大延长电池的使用寿命。
Silicon Labs(芯科科技) EFM8SB1 8位MCU数据手册(中文详细)
EFM8SB1是一款低功耗、功能全面的8位微控制器,专为电池驱动式应用设计。它采用小型封装,结合创新的低功耗技术,具有14个高品质电容感测通道和高精度模拟功能,适用于触摸屏/键盘、仪表盘、可穿戴产品和电池驱动的消费电子设备。
SILICON LABS - 微处理器,微控制器,多用途 8 位微控制器,EFM8SB10F4G,EFM8SB10F8G-A-CSP16,EFM8SB10F4G-A-QFN20,EFM8SB10F8G–A–QSOP24R,EFM8SB10F8G-A-QFN20R,EFM8SB10F8G,EFM8SB10F8G-CSP16,EFM8SB10F8G-A-QFN24R,EFM8SB1,EFM8SB10F2,EFM8SB10F2G-A-QFN20R,EFM8SB10F8G-A-QSOP24R,EFM8SB10F2G-A-QFN20,EFM8SB10F8G-A-QSOP24,EFM8SB10F8,EFM8SB10F8G-A-QFN24,EFM8SB10F8A-A-QFN20,EFM8SB10F8G-A-CSP16R,EFM8SB10F4G-A-QFN20R,EFM8SB10F4,EFM8SB10F8G-A-QFN20,EFM8SB10F8A-A-QFN24,EFM8SB10F2G,工业电子,消费电子,仪表板,触摸板/键盘,汽车电子,通信设备,电池驱动式消费电子设备
【技术】预安装BOOT的新一代的8位MCU
Silicon labs的EFM8系列MCU是C8051F的升级换代产品。较C8051F不同的是,其在出厂时已经固化好BOOT程序。
高性能8位MCU降低汽车设计中的成本和复杂性
从汽车安全系统和底盘系统到车身电子和动力总成管理,高性能微控制器(MCU)为当今的汽车设计提供了关键的控制和数据分析能力。
EFM8LB低功耗8位MCU在使用BOOTLOADER时,如何让程序进入BOOTLOADER?
EFM8LB的芯片进入BOOTLOADER有三种方法。第一种:上电后如果0X0000地址的数据为0XFF,程序会直接进入BOOTLOADER. 第二种:在上电复 位时,如果C2D引脚保持低电平超过50uS,程序会进入BOOTLOADER.第三种: 应用程序将R0赋值为0XA5,然后执行软启动,启动后程序会自动进入 BOOTLOADER。
Silicon Labs(芯科科技) EFM8 Busy Bee 系列EFM8BB2 8位MCU数据手册(中文)
EFM8BB2系列是Silicon Labs推出的高效能、小封装的8位微控制器,专为空间受限的应用设计。该系列采用C8051核心,提供丰富的模拟和数字外设,包括ADC、比较器、PWM、定时器等,适用于电机控制、医疗器械、消费电子等领域。
SILICON LABS - 微处理器,BUSY BEE单片机,微控制器,BUSY BEE MCU,MCU,单片机,EFM8BB21F16I-C-QSOP24R,EFM8BB21F16,EFM8BB2X-QSOP24,EFM8BB21F16G-C-QSOP24R,EFM8BB21F16I-C-QFN20R,EFM8BB21F16I-C-QFN20,EFM8BB21F16I-C-QSOP24,EFM8,EFM8BB,EFM8BB21F16G-B-QFN20,EFM8BB21F16G-B-QSOP24,EFM8BB21F16G-C-QSOP24,EFM8BB22F16I-C-QFN28,EFM8BB2X-QFN20,EFM8BB22F16G-B-QFN28,EFM8BB22F16,EFM8BB2,EFM8BB21F16A-C-QFN20,EFM8BB21F16G-C-QFN20R,EFM8BB21F16A-C-QFN20R,EFM8BB22F16G-B-QFN28R,EFM8BB22F16A-C-QFN28,EFM8BB22F16G-C-QFN28,EFM8BB22F16G-C-QFN28R,EFM8BB2X-QFN28,EFM8BB22F16A-C-QFN28R,EFM8BB21F16G-C-QFN20,EFM8BB22F16I-C-QFN28R,照明系统,工业电子,电机控制,高速通信集线器,消费电子,传感器控制器,汽车电子,医疗器械,通信设备
Silicon Labs的EFM8 8位MCU应用在汽车电子哪部分?
Silicon Labs的EFM8 8位MCU 可以用在电机驱动部分,倒车雷达等;【应用】EFM8BB2 8位MCU在倒车雷达上的应用
【技术】小封装、多用途8位MCU EFM8BB3系列MCU工作模式详解
EFM8BB3系列MCU是Silicon Labs公司推出的一款小封装、多用途8位MCU,该MCU最高运行频率可达49MHz,其RAM容量最大为4352B,FLASH容量最大可达64KB。
8位MCU EFM8LB1的可编程计数阵列PCA0具有哪些功能?
8位MCU EFM8LB1的可编程计数阵列PCA0由1个16位的定时/计数器和6个16位的捕获/比较通道组成,每个通道独立配置实现以下功能:边沿捕获、软件定时、高速输出、频率输出和脉宽幅度调制PWM输出。
Silicon Labs(芯科科技) EFM8 Busy Bee 系列EFM8BB1 8位MCU数据手册(中文)
EFM8BB1系列是Silicon Labs公司推出的小封装、功能全面的8位微控制器,专为空间受限的应用设计。该系列产品采用流水线式C8051内核,集成多种模拟和通信外围设备,适用于电机控制、医疗器械、消费电子、照明系统等领域。
SILICON LABS - 微处理器,BUSY BEE单片机,微控制器,BUSY BEE MCU,MCU,单片机,EFM8BB10F2G-QFN20,EFM8BB10F2,EFM8BB10F8I-A-QSOP24,EFM8BB10F4,EFM8,EFM8BB10M1069F8GM,EFM8BB10M1069F8GM-AR,EFM8BB10F8,EFM8BB10F8G-A-QSOP24,EFM8BB10F8I-A-QFN20,EFM8BB10F2G-A-QFN20R,EFM8BB10F8I-A-SOIC16R,EFM8BB10F2G-A-QFN20,EFM8BB1X-QFN20,EFM8BB10F4A-A-QFN20,EFM8BB10F8G-A-QFN20,EFM8BB10F8G-A-SOIC16,EFM8BB10F8G-A-SOIC16R,EFM8BB10M1069F8GM-A,EFM8BB1,EFM8BB10F8I-A-QSOP24R,EFM8BB10F2A-A-QFN20R,EFM8BB10F4G-A-QFN20R,EFM8BB10F4G-A-QFN20,EFM8BB10F2I-A-QFN20R,EFM8BB10F2G,EFM8BB10F8A-A-QFN20R,EFM8BB10F8G-A-QFN20R,EFM8BB10F4I-A-QFN20R,EFM8BB10F8G-A-QSOP24R,EFM8BB10F8G-QSOP24,EFM8BB1X-SOIC1,EFM8BB10F4A-A-QFN20R,EFM8BB10F8I-A-SOIC16,EFM8BB10F2I-A-QFN20,EFM8BB10F8G-QFN20,EFM8BB10F8A-A-QFN20,EFM8BB10F2A-A-QFN20,EFM8BB10F8I-A-QFN20R,EFM8BB10F4G,EFM8BB10F4I-A-QFN20,EFM8BB10F8G,EFM8BB1X-QSOP24,照明系统,工业电子,电机控制,消费电子,传感器控制器,汽车电子,医疗器械,I/O 端口扩展器,通信设备
为什么在8位MCU C8051F392上运行正常的程序增加了一个全局变量后就无法执行到主程序中?
8位MCU C8051F392芯片内部集成有看门狗功能,这个功能默认是开启的,当全局变量过多时,在C语言的程序初始化没有结束时看门狗已经复位了,所以无法执行到主程序中,解决 办法是将STARTUP.A51添加到项目中,并在STARTUP.A51文件中将看门狗关闭。
用EC5如何烧录8位MCU C8051F130的includes256-byte数据?
通过U-EC5中文下载程序软件可以实现。
电子商城
现货市场
服务

可定制连接器单PIN电流最大不超过10A;环境温度:-45度~+125度;寿命/拔插次数:不超过5000次。
最小起订量: 5000 提交需求>

可定制排针排母间距:0.8~2.54mm,排数:1~3,电流:最大不超过10A;环境温度:-45度~+125度;寿命/拔插次数:不超过5000次。
最小起订量: 5000 提交需求>
登录 | 立即注册
提交评论