摘要:今天有群友的RS485的自收发电路测试出现了问题,问该如何解决,群友的电路图如下,问题在于可以正常接收信息,但是发送的数据有问题(下图中VCC为3.3V,单片机为3.3V系统):
今天有群友的RS485的自收发电路测试出现了问题,问该如何解决,群友的电路图如下,问题在于可以正常接收信息,但是发送的数据有问题(下图中VCC为3.3V,单片机为3.3V系统):
群友使用的程序为收到什么数据,就向上位机重新发送这段数据,比如收到0x66,就回复0x66,但是测试数据如下,可以看到接收的数据和发送的数据不一致:
然后就问我电路图有没有问题,那么就按照发送低电平0和发送高电平1分别进行分析。首先是串口发送0低电平,UART_TX为0V,三极管Q4导通,三极管饱和电压VCE约等于0.2V左右,三极管的集电极电压等于VCC-VCE≈3V左右,此时485的使能端判断为高电平,MAX3485处于发送状态,A和B管脚均为推挽输出,A和B根据DI管脚数据输入低电平,芯片发送A低B高,此时A-B≈-2.5V,由于120Ω负载电阻,所以|A-B|会小于3.3V:
然后是串口发送高电平,此时单片机UART_TX为3.3V,三极管Q4截止,然后是不是就发现了问题点,此时由于485的使能管脚还加了一颗上拉电阻R84,所以说此时使能管脚是一个半高不低的电平大概1.6V左右(R84和R41分压),那么就正是这个半高不低的电平导致芯片使能异常,从而导致芯片工作异常:
修改意见:去掉R84上拉电阻,那么去掉上拉电阻后的自收发逻辑如下:UART_TX输出3.3V,三极管Q4截止,从而485芯片的使能管脚被R41下拉至低电平。从而芯片处于接收状态,又由于A、B管脚为高阻,所以此时A管脚电压约等于1.67V,B管脚约等于1.63V,此时A-B=0.04V。由于芯片A、B管脚均为高阻,所以说等效电路如下:
那么此时,是否会有疑问,RS485的高低电平判断标准不是±200mV吗?这AB之间的压差才为40mV可以正常判断为高电平吗?其实这个很多485芯片都已经做了优化,判断标准调整为了大于-50mV即为高电平,小于-200mV才为低电平。例如下图ADI的芯片MAX13080:
但是如果接收器用的485芯片是以±200mV为判断阈值的芯片,那这个自收发电路还是要出问题的。例如这个芯片MAX3485就是以±200mV为判断阈值的:
群友在去掉了上拉电阻R84后,RS485数据接收发送恢复正常。
问题排查总结:先排查原理图是否有误,再排查电路板是否有贴错料或者其他虚焊等;再通过示波器或者万用表工具查看波形或者电压,分析逻辑是否和原理图对应的上。最后结合起来分析具体原因。然后再推荐一个常用的TVS管型号SM712,一般485电路防护用的比较多,这种非对称式的TVS管。然后建议能不使用自收发就不要使用自收发,这个自收发的驱动能力比较弱,而且比较容易出问题。那么你知道电容C30的作用吗?欢迎评论区留言。
查看原文:https://www.dianyuan.com/eestar/article-8731.html
从上篇BUCK大家知道咱们设计的是进入36-48V电池端输入,输出要5V 3A
首先咱们常用的电路是同步buck,关于同步buck就不赘述了,还是看上一篇文档,咱们针对不同的问题分析
首先是定频buck芯片导致啸叫,大家首先要判断是电感/电容/电阻啸叫?
啸叫为什么能被我们听到,说白了这个频率在20-20KhZ的频段我们都能听见,只要频率范围不在我们听觉范围我们是听不见的,一般开关电源频率谐波含量均不会引起较大的噪声,只是在电源稳定的情况下,一般情况下只会有电感振动,不管是电感电容电阻振动我们都需要解决。
引起的原因有哪些呢?
1.地平面太小,电感线径太细;
2.DC/DC的占空比没有调节到很稳定;
3.可能是磁芯的磁滞伸缩引起的;
4.自激震荡,电流上升速度太快;
5.分布电感和电容引起的震荡;
6.感值偏差太大
等等上述原因,目前遇到的原因有这些,其他的设计中暂时还没有发现其他原因,若是有其他原因后期补上,欢迎大家留言评论,还会有哪些原因会引起啸叫?
按照个人思路加上这些年的总结,解决办法有如下解决思路?
1.首先在工业用品上,可以对电感浸胶;
2.一般空载响,重载就不响,可以在后端加电解电容,布局不要平行空间布局
3.后端可加RC滤波,并联到后端,有的会加假性负载,但是对电源效率影响较大,暂不支持后端并联电阻上去;
4.对于可调频芯片,可以适当加大一点频率,但是有一定的损耗;
5.感量太大可加RC并联,也可以减小感量,拆减几圈电感;
6.可调频芯片调整合适的开关频率;
目前暂时有这几种解决办法,如果大家还有其他的,欢迎留言跟上。
查看原文:https://www.dianyuan.com/eestar/article-8728.html
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx系列GPIO提早供电会影响上电时序导致内部DCDC启动失败。
最近有一个 RW612 产品线的同事在设计一个双 MCU 系统 Demo 时发现,当 RW612 板卡和 RT1060 板卡通过 UART 对接时,如果 RW612 板卡提前上电,RT1060 板卡后上电,会导致 RT1060 程序无法正常启动。这其实是一个 i.MX RT 系列上典型的上电时序问题,今天痞子衡就和大家聊聊这个话题:
Note: 本文内容以 i.MXRT1060 为例,但基本也适用其他 i.MXRT1xxx 系列。
一、快速复现问题痞子衡同事在用两块 MCU 板卡(RW612+RT1060)对接时遇到了问题,想复现这个问题,其实没有那么复杂,我们可以用一个USB转串口模块(3.3V)代替 RW612 来和 RT1060 的 ROM ISP UART 口连接:
痞子衡使用得这个USB转串口模块 TXD 和 RXD 驱动能力不同,空载电压测得均是 3.55V,但是和未上电的 RT1060-EVKB 板卡对接时,电压会有所下降,因此痞子衡测试了不同连接组合下的 RT1060 板卡上电启动结果:
从测试结果可以看到,RT1060 程序启动失败的主要原因是板卡上电后,VDD_SOC_IN 上没有电压(即主芯片内部 DCDC 没有输出)。
在分析启动失败问题前,首先需要简单了解下 i.MXRT1xxx 芯片内部的 DCDC 模块。在一些成本敏感的应用中,首推使用芯片内部 DCDC 供电给内核,因此 DCDC 模块能否正常启动决定了内核能否正常运行。
在恩智浦官网文档 《i.MX RT Hardware Development Guide for the MIMXRT1050/MIMXRT1060 Processor》 里对上电时序做了如下严格规定,其中最常发生问题的地方就是有效 DCDC_PSWITCH 和 DCDC_IN 之间至少 1ms 的延时(以 DCDC_IN 稳定在 3V 为时间起点,以 DCDC_PSWITCH 上升到 1.5V 为时间终点),如果不满足这个 1ms 延时要求,内部 DCDC 模块则可能会启动失败,无法正常输出电压给内核(DCDC_LP 脚)。
现在我们查看一下 RT1060-EVKB 原理图设计,外部电源输入 DCDC_3V3 负责给 NVCC_GPIO/SD1/EMC 以及 DCDC_IN 供电,同时 DCDC_IN 也经过了一个 RC 延时电路供电给 DCDC_PSWITCH,这是符合硬件设计要求的。
由于 RT1060 上 GPIO_AD_Bx 和 GPIO_Bx 两组 PAD 供电均来自于 NVCC_GPIO,当其中任何一个 GPIO 有电压时,均可能会漏电到 NVCC_GPIO。因此我们提前将 USB 转串口模块通过 ROM ISP UART 连到板卡,即会漏电到了 NVCC_GPIO->DCDC_3V3->DCDC_IN->DCDC_PSWITCH,即相当于给 DCDC_PSWITCH 的 RC 电路预充了一定电,等板卡正式上电,RC 电路升压到 1.5V 的时间就会缩短。这也就是上个小节表格里为何 DCDC_PSWITCH 预充到 0.33V 时不影响上电时序,而预充到 1.42V 时就不行了,因为延时小于 1ms 了。
根据 RT1060-EVKB 这样的电源电路设计,不仅仅 ROM ISP UART 两个引脚提前上电会影响芯片启动,属于 NVCC_GPIO/SD1/EMC 供电下的任何一个 GPIO 提前上电都会产生相同的效果。但是 NVCC_SD0 供电下的 GPIO 则不会影响启动,因为它在走线上和 DCDC_PSWITCH 之间没有连接。
现在我们知道了问题产生的原因,以后遇到此类问题,第一时间先去测量 i.MXRT1xxx 内部 DCDC 输出(DCDC_LP)的电压(如果为 0,则一定是上电时序问题)。那该如何规避问题呢?以与 RT1060-EVKB 连接为例则有如下三个方法:
方法一: 两个板卡之间用 UART 信号连接时串上隔离电阻(比如1K欧姆),这样能降低漏电到 NVCC_GPIO 的电压(以实测为准)。
方法二: 选用不干扰 DCDC_PSWITCH 信号的 GPIO 组(对于 RT1060-EVKB,则是 GPIO_SD_B0_xx 引脚)进行连接。
方法三: 将 RT1060-EVKB 板卡,改为外部 PMIC 供电,弃用主芯片内部 DCDC。
至此,i.MXRT1xxx系列GPIO提早供电会影响上电时序导致内部DCDC启动失败便介绍完毕了,掌声在哪里~~~
查看原文:https://www.dianyuan.com/eestar/article-8641.html
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500。
自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语音市场)问世以来,近两年时间这个系列一直没有再出新品,这其实是可以理解的,毕竟i.MXRTxxx系列走的不是通用市场路线,无法按照通用MCU产品那样以每年推2-3款型号的固定节奏来立项。不过就在上个周末,NXP悄悄上线了新一款型号i.MXRT500,这是个主打智能可穿戴市场的MCU。今天痞子衡就和大家一起看看i.MXRT500什么来头。
先来一睹i.MXRT500内部模块框图,它搭载的是Arm最新的Cortex-M33内核,主频可达200MHz,此外还为CM33配备了2个协处理器(PowerQuad和Casper,可加速DSP、FFT,加解密运算等)。
除了CM33主核,还有两个专用的处理器,分别是来自Cadence的DSP(Tensilica Fusion F1)和来自Verisilicon的GPU(Vivante GCNanoLiteV),两个处理器主频均可达200MHz。
内存方面,标配了5MB SRAM,跑一个中等量级的AI算法也够够的。虽然没有集成内部Flash,但是可通过高效的FlexSPI外扩串行Flash(当然也可以是PSRAM),想扩多大就扩多大。
接口方面,USB,SD,MIPI,DMIC应有尽有,还有两个特色模块Flexcomm,FlexIO,常规接口都能灵活配置实现。
从全球市场来看,未来可穿戴设备尤其是智能手表(含运动手表和通话手表)将快速发展,年复合增长会在16.4%。对于下一代运动手表,i.MXRT500将会是非常合适的主控,它可以解决这四大痛点:1,更长待机;2,更出色的彩屏显示;3,更多手机端的应用和功能下沉到手表端;4,新增更多音频项目的突破性功能。
i.MXRT500可以用于如下两种不同的系统框架:
第一种是把i.MXRT500当作主控芯片,这种系统对应了典型的运动手表。i.MXRT500的主要特点是在低功耗的情况下,用MIPI-DSI驱动彩屏、通过DMIC处理语音信号、通过I2S或者PCM驱动声音输出。与i.MXRT500连接的蓝牙等无线连接,也可以用于从智能手机接收信号,并尽量把手机上的功能下沉到i.MXRT500来执行。
第二种是把i.MXRT500当作Sensor Fusion协处理器。在这种系统中,通常手机芯片作为主控芯片,驱动显示器和无线连接。i.MXRT500的主要职责是管理传感器、麦克风、扬声器,并尽可能将应用处理器处于低功耗或者关闭模式,以延长电池使用时间。
更多介绍可观看视频:https://www.moore8.com/m/course-detail/2919
为了让大家能快速评估i.MXRT500性能和功耗,恩智浦官方配套推出了i.MXRT500-EVK开发板,各种存储,音视频接口都有,还可以选配400x400智能手表专用圆屏,很方便就可以搭建智能手表Demo(在2020上海慕尼黑电子展,RT-Thread展台上就有一套基于RT500-EVK的穿戴Demo构建方案:RT500 + RT-Thread + 柿饼 UI)。
在前面方案系统框图里,我们可以看到目前有很多GUI厂商都在i.MXRT500上做了智能手表原型Demo,其中也包含MicroEJ这个知名厂商,恩智浦有一个网页专门整理了MicroEJ的Demo设计,资料很详细,还有Demo视频,甚至还有一个Virtual Device Player模拟器,快去体验一下吧。
MicroEJ Demo网址:https://developer.microej.com/ ,rt595_wearable
至此,恩智浦i.MX RTxxx系列MCU的新品i.MXRT500痞子衡便介绍完毕了,掌声在哪里~~~
来源:城市套路深