【经验】32位MCU LEUART位周期抖动大,该如何解决?
近日,一客户反馈,选用了SILICON LABS 32位EFM32系列MCU(典型型号EFM32ZG110),当基于32.768kHz时钟使用LEUART(@9600bps)进行通讯的时候,发现存约1%误码,原因是什么?该如何解决呢?
为了寻找原因,在软件上,我们先是检查了客户软件的配置,无明显异常;后是换为标准例程,问题依旧;之后在硬件上,检查了晶体,精度也是正常;最后,为了发现原因,上了示波器,直接测试波形,具体如图1所示。
图1:串口波形实测图
由图1我们可以明显地看到,波形中的位周期似乎有差异。为此,特意测试了一下周期,详细如下图2。
图2:实测周期
如上两图,显然,LEUART位周期是存在跳动的。最小为92us,最大可以到122us,跳动比较大。
这是什么原因导致的呢?经向原厂咨询,原因如下。
对于EFM32的TX, 是基于32.768kHz的clock产生的。其使用了具有一个5bit分数的clock divider.
因为32.768k/9600=3.41333333333, 其最接近的具有5位小数的是3.40625. 这个数乘以32之后是109, 即0x6d=b01011101.
而这个并不是一个整数, 而是一个在3和4之间的数, 也就意味着所产生的bit的长度有的是3个LFXO clock, 有的是四个LXFO clock. 也就是截图中看到的92和122uS, 如果32.768kHz的LFXO足够准确, 应该是91.575uS 和122.070uS。
而这个5位的小数, 意味着32个bit连起来的话, 其pattern会重复一遍。这个不太好解释, 比如这里的小数部分为0.40625,乘以32就是13, 也就是意味着在32个bit中, 有19个是91.575nS, 而另外13个为122.070uS. 这也是你看到的10个bit 中有6个92uS和4个122uS 的原因. 因为0.40625接近0.4, 小于0.5, 也就意味着你看到十分之4的122uS.
正如reference manual里面所说(在讨论发送jitter的那一节). 你可以通过32.768kHz的clock产生一个序列, 同时产生一个理想的9600Hz的bit的边缘. 然后用32.728kHz产生的clock序列中的上升沿中最接接进9600 bit边缘的上升沿来生成efm32生成的tx信号.
也就是说, 这里的efm32 tx每个bit的边缘he理想的边缘不会相差多于半个32.768 clock 的长度. 也就是大概15.258uS. 这对于一个9600的bit的长度104.166uS来说大概占到1/7.
所以这个jitter和由于clock source 频率不准带来的jitter并不一样. clock frequency 不准会使得误差积累, 比如2% clock 频率误差会使得第10个bit偏移20%的bit时间.
一般情况下对于接收端会采取不同的采样策略, 比如USART在UART模式可以在每个bit不同时刻采样几个,然后看采样到的0个数多还是1个数多. 这里不知道和efm32通讯的另一端采用的那种策略. 比如如果采用在bit的中间位置采样, 都不会出现什么问题.
由此可见,这个位周期的跳动,主要是因在32.768kHz低频下、波特率产生机制的导致的。
那么如何降低为周期跳动呢?有如下四个方案:
方案一:晶体不变,将波特率设为32.768k/3,获得整数分频;
方案二:波特率不变,将晶体调整为9600*3;
方案三:让功耗迁就波特率,在LEUART工作时、则MCU工作在EM1模式下,让LEUART基于HFXO工作。
方案四:
1、假如工作在发送状态下,我们可以直接在EM1模式下发送;
2、假如工作在接收状态下,可按如下方式配置:
1)进入EM2前,将LEUART-RX脚,配置为INT0输入脚、即外部中断输入脚,并屏蔽LEUART功能;
2)如此,当LEUART外部有串口数据进入时,则会唤醒EFM32ZG,此时将时钟快速切换到HFXO,并重新配置起LEUART功能;在HFXO下,9600bps将是非常准确的。
如此,即能在EM2模式等待串口数据,既能实现低功耗特性,又能使数据不会出现错误,还满足LEUART功能。
综上所述,因32.768kHz时钟低,且对于9600bps来说,无法实现整数分频所以导致了位周期抖动。但本文所提供的四个方案,可完全解决该问题,用户可以根据需要来选择合适的方案。
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 5
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【经验】EFM32系列低功耗32位MCU芯片加密详解
本文主要介绍以Silicon Labs EFM32系列低功耗32位MCU为核心的方案打造加密系统。
【经验】简述32位MCU EFM32/EZR32的USB-UART引导加载程序的编程、验证、安全命令的使用
引导加载程序使用户能够通过UART或USB CDC类虚拟UART对EFM32或EZR32进行编程,而无需调试器,故本文旨在指导用户如何在EFM32或EZR32器件的使用中去引导加载程序。除了引导用户应用程序之外,它还提供了破坏性写入模式,允许用户覆盖引导加载程序,以便整个闪存都用于用户应用程序。还可以通过CRC校验来验证存储内容,并且可以启用Debug锁定来保护IP。
【经验】32位MCU的LDMA实现ADC至RAM的数据传输调试方法
Silicon Labs的EFM32PG/ EFM32JG系列32位MCU具有超低功耗、高性能、丰富的外设等特点,其 LDMA相比于series 0的DMA具有更多的传输方式,更适合应用于电池供电的产品。
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
SILICON LABS 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,频率24MHz~80MHz,Flash存储4kB~2048kB,RAM存储2kB~512kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
Cryptography
|
Dig I/O Pins
|
ADC 1
|
DAC
|
USB
|
Cap Sense
|
LCD
|
Temp Sensor
|
Timers (16-bit)
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
EFM32GG290F512-BGA112
|
32位MCU
|
EFM32 Giant Gecko
|
48
|
512
|
128
|
1.98
|
3.8
|
BGA112
|
10x10
|
±2%
|
ETM; SW
|
AES-128 AES-256
|
90
|
12-bit, 8-ch., 1 Msps
|
12-bit, 2 ch.
|
-
|
Cap Sense
|
-
|
Temp Sensor
|
4
|
7
|
3
|
3
|
2
|
1
|
0
|
RTC
|
2
|
选型表 - SILICON LABS 立即选型
SILICON LABS EFM32 Zero Gecko 32-bit Microcontroller选型表
SILICON LABS 32位MCU选型,基于24MHz Frequency,4kB~32kB Flash,2kB或4kB RAM等参数进行选型。
产品型号
|
品类
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
DAC
|
Cap Sense
|
Temp Sensor
|
Timers (16-bit)
|
AES-128
|
UART
|
USART
|
SPI
|
I2C
|
I2S
|
EMIF
|
RTC
|
Comparators
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Debug Interface
|
EFM32ZG222F8-QFP48
|
Microcontroller
|
24
|
8
|
2
|
37
|
12-bit, 4-ch., 1 Msps
|
—
|
Cap Sense
|
Temp Sensor
|
2
|
AES-128
|
2
|
1
|
1
|
1
|
1
|
0
|
RTC
|
1
|
1.98
|
3.8
|
QFP48
|
7x7
|
±2%
|
SW
|
选型表 - SILICON LABS 立即选型
【应用】32位MCU在中高端音频处理系统中的应用
音频信号处理涉及多方面,如采集、去除噪声等等,普通MCU很难用一颗芯片集成如此众多的功能。
【应用】EFM32TG11低功耗32位MCU在超声波水表上的应用
Silicon Labs的32位MCU EFM32TG11,最高主频48MHz,37uA/MHz的全速运行功耗,1.3uA休眠EM2模式功耗,集成低功耗LCD驱动,最大128KB大容量Flash,32PIN到80PIN多种可选封装,将助力于超声波水表超低功耗,多功能,低成本设计。
【应用】1MByte Flash空间 32位MCU助力无线中继器数据传输
Silicon Labs EFM32JG系列MCU,采用功能强大的 32 位 ARM® Cortex®-M3 内核,EM4H 休眠模式(128 字节 RAM 保留)功耗只有0.39uA,集成AES、ECC 和 SHA 的硬件加密引擎和真随机数发生器(TRNG)
Silicon Labs 32位低功耗MCU EFM32JG1P在故障指示器的应用中,GPIO拉低后,电平为0.8V,而不是0V,根本原因是什么?
Silicon Labs 32位低功耗MCU EFM32JG1P GPIO拉低后,电平为0.8V,主要是因为底下大焊盘PIN0没有连接到GND或者与GND接触不良造成。
如何为Silicon Labs 32位低功耗MCU EFM32GG230F512实现基于RTC的软件无滴答日历?
在Silicon Labs 32位低功耗MCU EFM32GG230F512上实现软件方式的无滴答日历,可以通过使用日历标准C库 time.h, 在time.h中实现的timer()函数基于RTC计数值来计 算日历时间。
如何读取EFM32系列32位MCU的多通道AD扫描采样数据?
EFM32系列单片机ADC的数据保存寄存器有两个,一个是单通道模式的采样数据保存寄存器,一个是扫描模式的采样数据保存寄存器。如果使用多通道扫描采样,那么每个通道采样完成后会产生一个ADC扫描模式中断,用户需要在中断里面读取该通道的扫描采样数据以便存储下一个通道的采样数据。建议使用DMA读取方式,将DMA的触发源设置为ADC的扫描模式事件,这样就可以实现不用进入ADC中断以及MCU的参与即可完成ADC扫描采样数据的保存和读取。
【产品】超低功耗的精度和模拟外围设备的32位低功耗微控制器EFM32HG 系列
专门开发世界级混合信号器件的深圳芯科科技有限公司(Silicon Labs)开发了世界顶级节能微控制器EFM32 MCUs系列产品,其中Happy Gecko 32 位微控制器系列基于强大的 ARM® Cortex®-M0+ 内核,具有低能耗技术、短的节能模式唤醒时间以及多种多样外围设备等优点,实现了高功能、低功耗的系统设计,非常适用于任何电池驱动的应用以及其他需要高性能和低能耗的消费类电子
32位MCU EFM32LG330在上电时,其IO会比VDD先上电,从而导致MCU工作异常,应如何处理?
解决方法如下:1、最根本的解决方法,通过调整滤波电容或供电途径,确保VDD先于IO口得电;2、当出现死机时,可以通过拉低复位管脚,来确保解除死机状态。
【产品】8位、16位、32位MCU究竟该如何选择?
本文介绍8位、16位、32位MCU的差异特性。
电子商城
现货市场
查看全部2条回复