AUTOSAR架构下ICU唤醒详解

原创 汽车电子嵌入式 2024-09-29 11:35

前言

在《AUTOSAR架构下CanTrcv休眠唤醒问题再探》一问中我们粗略的介绍了CanTrcv中的ICU唤醒相关的功能,但是关于ICU唤醒ECU的描述还不够详细清晰,且含存在很多疑问。本文就来详细梳理下如何通过ICU唤醒ECU,且回答以下问题:

问题1通过ICU唤醒ECU时,以下3API有个差异,在什么时机调用他们, 都需要用户手写代码调用么?

Icu_EnableNotification

Icu_EnableNotification

Icu_EnableWakeup

Icu_DisableWakeup

Icu_EnableEdgeDetection

Icu_DisableEdgeDetection

问题2Icu_SetMode在什么时候调用,有何作用?

问题3Icu_CheckWakeup在什么时候调用,有何作用?

问题4:不同芯片平台(TC3xx, RH850F1KM, NXPS32K1xx)通过ICU唤醒后的行为有何差异?

目录


注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

1.前置条件

本文假设我们的ECU系统是深度休眠系统(没有SBCEcuM下电走GoSleepGo Halt Sequence)。通过CAN Transceiver作为唤醒源及ICU作为中断捕获模块来唤醒ECU,具体硬件逻辑图如下所示:


1)如果使用T1J1043/T1J1145收发器,则使用收发器的INH引脚作为硬件唤醒引脚,且将INH连接到MCUINT中断引脚,该INT中断引脚也是ICU模块一个ChannelICU_MODE_SIGNAL_EDGE_DETECT模式)的引用引脚。


2)如果使用T1J1044收发器,则使用收发器的Rx引脚作为硬件唤醒引脚,且将收发器的Rx连接到MCUINT中断引脚(也是MCU CAN控制器的Rx引脚),该INT中断引脚也是ICU模块一个ChannelICU_MODE_SIGNAL_EDGE_DETECT模式)的引用引脚。


本文假定使用ECU T1J1043收发器。


2.背景知识

2.1.RH850-F1KM芯片

RH850-F1KM芯片进入深度休眠(DeepSTOP)后,通过中断唤醒(Wakeup-factor 1)后,芯片切换到RUN模式,且整个软件Reset地址开始重新运行



2.2.NXP-S32k1xx芯片

NXP-S32K1xx芯片进入深度休眠(STOP mode or VLPS)后,通过中断唤醒后,芯片切换到RUN模式,软件从进入休眠的指令地址接着运行



2.3.Infineon-TC3xx芯片

2.3.1. CPU模式

从单个CPU角度来讲,PM模块能够管理的CPU的两个电源模式:


. CPU Run Mode

. CPU Idle Mode


关于PMS模块管理的两个CPU Mode的描述入下表所示:


注意IDLE模式的进入和退出条件,通过寄存器设置进入IDLE模式,中断或者Trap退出IDLE模式。


站在整个芯片的角度来看,CPU模式分为Master CPU(CPU0)模式和Slave CPU(CPUx, x=0,1,2,3,4,5…)模式。


CPU0 modes: CPU0复位后,CPU0自动切换到RUN模式,RUNIDLE模式之间可以通过PMS模块的PMCSR0寄存器的REQSLP位域控制切换。


CPUx modes: CPUx复位后,CPU自动进入到Halt模式(CPUx是不工作的),从Halt模式单向切换到RUN模式需要控制SYSCON.BHALT = 0RUNIDLE模式之间可以通过PMS模块的PMCSR0寄存器的REQSLP位域控制切换。


2.3.2. 系统模式

从系统(System)角度来讲,PM模块能够管理系统的三个电源模式:


. System Run Mode

. System Sleep Mode

. System Standby Mode


关于PMS模块管理的System Mode的描述入下表所示:




需要注意的是系统Standby Mode会因硬件的设计的不同(供电模式)而不同,VEXTVERSB如果是同一个外部供电则进入Standby ModeVEXTVERSB都还有供电,如果VEXTVERSB是单独供电,则进入Standby Mode后会切断VEXT的供电只有VERSB供电,这样进入和退出Standby模式的条件所有不同。


2.3.3. CPU模式和系统模式的关系

1)系统模式进入到Reset模式,则所有的CPU模式也进入到Reset模式。


2)系统模式进入到RUN模式,则Master Core(CPU 0)一定处于RUN模式

3)系统从RUN模式进入到SLEEP模式可以通过Master CPU或者Slave CPU设置。也就是说,系统进入到SLEEP模式后,起码有一个CPU进入到了IDLE模式。


4)系统进入到Standby模式后,CPU Core都下电了,所以系统在Standby Mode下不用考虑CPU模式。


Standby模式比Sleep模式的低功耗做的更彻底。


2.3.4. ECU休眠与唤醒

TC3xx芯片平台的ECU下电可以选择进入到SLEEP模式(CPU模式为IDLE模式),或者进入到Standby模式。


ECU下电进入到SLEEP模式(CPU进入到IDLE模式)后,CPU代码执行停止。通过外部中断可以唤醒CPUCPU被唤醒后进入到唤醒中断处理函数,然后程序接着Halt的地方继续往下运行



ECU下电进入到Standby模式(CPU被下电了)后。通过唤醒请求可以唤醒CPUCPU被唤醒后会从Reset出开始运行


也就是说,TC3xx平台可以根据ECU系统设计下电进入SLEEP或者STANDBY模式,ECU下电被唤醒后则可能继续运行代码或者复位重跑

.

3.CanTrcvICU

CanTrcv驱动程序应使用ICU驱动程序提供的以下API来启用和禁用唤醒事件通知:

- Icu_EnableNotification

- Icu_DisableNotification


仅当为参数CanTrcvIcuChannelRef配置了参考时,CanTrcv驱动程序才应启用/禁用ICU通道。

CanTrcv驱动器应确保以下事项,以避免唤醒事件丢失:


当收发器转换到待机模式(CANTRCV_Standby)时,它应启用ICU信道。

CanTrcv_SetOpMode(uint8 CanTrcvIndex, CanTrcv_TrcvModeType OpMode){  /*Other Logic*/  Switch(OpMode)  {    Case CANTRCV_OP_MODE_NORMAL:      Icu_DisableNotification(CanTrcvIcuChannelRef);    Break;    Case CANTRCV_OP_MODE_STANDBY:      Icu_EnableNotification(CanTrcvIcuChannelRef);    Break;    /*Other logic*/  }}

当收发器转换到正常模式(CANTRCV_Normal)时,它应禁用ICU信道。


4.EcuMICU

EcuM中关于CanTrcv唤醒ECUECU通过ICU来捕获唤醒源的过程描述分为以下三个部分:


1)第一部分,ECU满足休眠条件后走GoSleep Sequeuece, EcuM会调用EcuM_EnableWakeupSources这个callout函数,EcuM_EnableWakeupSources -> CanIf_SetTrcvWakeupMode -> CanTrcv_SetWakeupMode使能CanTrcv的唤醒检测功能。EcuM_EnableWakeupSources -> Icu_EnableWakeup使能ICU模块的唤醒功能。最后EcuM调用Mcu_SetMode设置MCUHalt模式。


注意Halt模式,对应RH850-F1KM新的DeepStop模式,NXP-S32K1xx芯片的VLPS模式,对应TC3xx芯片的SLEEP模式。


2)第二部分,外部报文通过CanTrcvINH引脚唤醒ECU,因为INH引脚接到了ICUPort Pin上,也就是ICU会识别到Edge Detecton产生中断,ICU的中断处理函数中会调用EcuM_CheckWakeup来检测唤醒源。EcuM_CheckWakeup是一个callout函数,EcuM_CheckWakeup -> CanIf_CheckWakeup -> CanTrcv_CheckWakeup最后还是通过CanTrcv_CheckWakeup函数来检车CanTrcv的唤醒事件,如果检测到唤醒事件CanTrcv_CheckWakeup会调用EcuM_SetWakeupEvent来通知EcuM模块。


注意1:因为我们这里介绍CanTrcv的唤醒过程,所以EcuM_CheckWakeup这个callout里面应该调用CanIf_CheckWakeup,如果是其他的外设作为唤醒源头,那么EcuM_CheckWakeup应该调用_CheckWakeup.


注意2:这个过程和具体的芯片强相关,按照第二章节的描述,只有NXP_S32K1xx芯片设置到VLPS模式或者TC3xx芯片设置到SLEEP模式,才会产生这个中断处理函数调用,也就有上诉的中断函数调用过程。如果是RH850_F1KM设置到DeepStop模式或者TC3xx芯片设置到Standby模式,CanTrcv的唤醒事件会触发芯片复位(软件从Reset地址开始运行),也就是没有这个中断函数调用过程了。


3)第三部分,有第二部分才有第三部分。ECUHalt状态唤醒后,EcuM从代码halt的地方继续往下走WakeupSequence.首先调用Mcu_SetMode设置芯片到Normal状态(RUN状态)。然后EcuM调用EcuM_DisableWakeupSources -> Icu_DisableWakeup关闭ICU的唤醒功能。



注意:实际工程中(个人接触到项目中),无论芯片是否支持Halt状态唤醒后继续往下执行程序都不会选择继续执行,而是通过软件复位或者芯片硬件本身复位后从Reset地址开始从头运行。这样能避免很多不可知的问题(因为唤醒后继续运行,意味着ECU只要不下电就没有主动复位的机会,对ECU的设计要求很高)。也就是说,AUTOSAR的标准流程下的EcuM_DisableWakeupSources这个callout函数可能是永远不能被调用到,所以需要ECU设计者在ECU启动的某个合适的地方调用EcuM_DisableWakeupSources这个函数。


5.ICU中唤醒功能

5.1. ICU模式

ICU模块有两个模式:


nICU_MODE_NORMAL

nICU_MODE_SLEEP


ICU_MODE_NORMAL模式下:


所有通知都可以通过服务ICU_SetActivationCondition()或IcuDefaultStartEdge配置。


在调用ICU_SetMode()之前或之后,所有通知都可以通过ICU_DisableNotification()ICU_EnableNotification()服务选择。


ICU_MODE_SLEEP模式下:


只有那些配置为可唤醒的唤醒事件可用,在Icu_Init()之后通过Icu_EnableWakeup()启用,并且没有通过服务Icu_DisableWakeup()禁用。


由该模块处理的所有其他中断都被禁用并且如果事件发生则不会导致退出MCU的低功率模式状态(例如空闲Idle、停止Halt)。


除满足以下条件的这些通道外,所有通道均已停止: - 它们已被配置为具有唤醒功能(wakeup capable),并 - 通过调用Icu_EnableTakeup明确启用。


5.2.ICU唤醒相关的API

5.2.1. API

Icu_SetMode

Icu_DisableWakeup

Icu_EnableWakeup

Icu_DisableNotification

Icu_EnableNotification

Icu_EnableEdgeDetection

Icu_DisableEdgeDetection


ICU模块的以上APIICU的唤醒功能相关,具体每个函数的使用及其调用SequenceAUTOSAR官方文档上都有详细的介绍,这里仅介绍Icu_EnableWakeupSequence.


上图的核心内容就是:在ICU模块处于ICU_MODE_SLEEP模式下时,只有配置了Wake up capable且调用了Icu_EnableWakeupICU Channel才能通过Wake up event产生Wake-up notification (也就是中断)


注意ICU_MODE_SLEEP模式下,只有产生了Wake-up notification(通过Icu_EnableWakeup使能)后才能产生Rising/Fail edge notification(通过Icu_EnableNotification使能).


5.2.2.小结

1) Icu_SetMode用来设置ICU的模式,在ICU_MODE_SLEEP模式只有配置了Wakeup CapabilityTrue且调用了Icu_EnableWakeup的通道(Channel)才能产生唤醒中断(唤醒MCU.


2Icu_EnableWakeupIcu_DisableWakeup用来Enable/Disable通道的唤醒能力,一般在ICU进入到ICU_MODE_SLEEP模式后Enable对应通道的唤醒功能,在ICU_MODE_NORMAL模式下Disable其唤醒功能。


3)Icu_EnableNotificationIcu_EnableNotification用来Enable/Disable通道在上升沿/下降沿/双边沿是否产生Notificaltion通知(也会产生中断),且这两个API只有ChannelICU_MODE_SIGNAL_EDGE_DETECT模式时才能调用。


4ICU唤醒功能的Channel一般都配置为ICU_MODE_SIGNAL_EDGE_DETECT式,Icu_EnableEdgeDetectionIcu_DisableEdgeDetection用来Enable/Disable通道的边沿检测。也就是说,Enable Edge DetectionEnable WakeupEnable Notification的前置条件。


总结下以下三组函数的区别: I

Icu_EnableNotification

Icu_EnableNotification


Icu_EnableWakeup

Icu_DisableWakeup


Icu_EnableEdgeDetection

Icu_DisableEdgeDetection


ICU唤醒的Channel一般使用ICU_MODE_SIGNAL_EDGE_DETECT模式,所以,首先要调用Icu_EnableEdgeDetection使能唤醒检测,然后如果要在ICU信号的上升沿/下降沿产生Notification的话就需要调用Icu_EnableNotification使能Notification(这个是可选的),ICU进入到ICU_MODE_SLEEP模式需要调用Icu_EnableWakeup使能唤醒功能。


注意Icu_EnableWakeupIcu_EnableNotification都会产生中断,Icu_EnableNotification的中断用于ICU信号的边沿检测通知,ICU_MODE_SLEEP模式的中断用于ICU处于ICU_MODE_SLEEP模式的唤醒。


猜测Icu_EnableWakeupIcu_EnableNotification产生的可能是同一个中断,产生中断后只是通过软件逻辑来实现API的逻辑功能。比如,ICU_MODE_NORMAL模式下仅调用Icu_EnableNotification后再调用ICU_SetMode设置ICUICU_MODE_SLEEP模式,因为没有调用Icu_EnableWakeup使能唤醒,ICU的中断应该是被Disable的,这个时候ICU通道上有上升沿/下降沿信号也不会产生中断(如果MCU进入休眠状态,也就唤不醒MCU)。


6.工程中ICU唤醒使用经验

从第2章节我们知道,有些芯片在进入到Halt模式(DeepStop)后被中断唤醒后是从Reset地址重跑,有些芯片是接着Halt地址处接着往下运行。实际工程中,如果芯片是接着Halt地址处接着往下运行我们也会让其软件复位重新跑,这样能减少软件的实现难度。


也就是说,实际工程中EcuMWAKEUP 1阶段是没有的。


所以实际工程项目中使用ICU唤醒(Cantrcv作为外设唤醒)的步骤一般如下(以RH850-F1KM为例)


1配置Port模块:配置用于ICU唤醒的Port pin的复用功能,需要选择器INT功能。

  • 查看软硬件接口表找到硬件唤醒脚,Davinci中配置Port模块的唤醒Pin的属性。


  • 配置中断唤醒Pin的电平触发模式。


2)配置MCU模式。

  • 添加一个Mcu深度休眠模式。


  • 添加MCU唤醒Pin


3)配置ICU模块:Channel配置为Icu_EnableEdgeDetection模式,根据需要配置其他NotificationCallout函数,且配置其Wakeup CapabilityTrue.



4)配置Cantrcv模块:根据需要引用ICU Channel (需要Cantrcv在进入到Standby模式时调用Icu_EnableNotification且进入到Normal模式时调用Icu_DisableNotification就引用).


5)实现EcuM_EnableWakeupSource这个Callout函数:

EcuM_EnableWakeupSource(EcuM_WakeupSourceType wakeupSource) {   If(ICU_Wakeu_Source == wakeupSource)   {     Icu_EnableEdgeDetection(Icu_wakeup_channelId); Icu_EnableEdgeDetection(Icu_wakeup_channelId);     Icu_SetMode(ICU_MODE_SLEEP);   } }

注意EcuM_EnableWakeupSource这个Callout函数在EcuMGoSleep Sequence中会被调用。也就是说不用用户手动调用。


6)实现EcuM_DisableWakeupSource这个Callout函数:

EcuM_EnableWakeupSource(EcuM_WakeupSourceType wakeupSource) {   If(ICU_Wakeu_Source == wakeupSource)   {     Icu_DisableEdgeDetection(Icu_wakeup_channelId); Icu_DisableEdgeDetection(Icu_wakeup_channelId);    Icu_SetMode(ICU_MODE_NORMAL);  } }

注意EcuM_EnableWakeupSource这个Callout函数理论上在EcuMWAKEUP 1 Sequence中会被调用。但是,实际情况中是不会有这个Sequence存在,也就是需要开发者在EcuM的上电流程中手动调用。


7.总结

问题1通过ICU唤醒ECU时,以下3API有个差异,在什么时机调用他们, 都需要用户手写代码调用么?

Icu_EnableNotification

Icu_EnableNotification


Icu_EnableWakeup

Icu_DisableWakeup


Icu_EnableEdgeDetection

Icu_DisableEdgeDetection

答:3.2章节和第4章节。


问题2Icu_SetMode在什么时候调用,有何作用?

答:3.2章节和第4章节。


问题3Icu_CheckWakeup在什么时候调用,有何作用?

:如果有其他外设(类似Cantrcv)通过ICU来唤醒ECU时,可以借用Icu_CheckWakeup来检测唤醒源。在EcuM_CheckWakeup这个Callout函数中调用Icu_CheckWakeup.


问题4:不同芯片平台(TC3xx, RH850F1KM, NXPS32K1xx)通过ICU唤醒后的行为有何差异?

答:2章节。



End

「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」


点击文章最后左下角的阅读原文可以获取更多信息


或者复制如下链接到浏览器获取更多信息

https://blog.csdn.net/qq_36056498/article/details/132125693


文末福利




1
.如需汽车电子嵌入式收集的学习文档,
后台回复“

资料

即可免费下载;

2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;



注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!


推荐阅读

汽车电子嵌入式精彩文章汇总第一期:20210530-20230703

汽车电子嵌入式精彩文章汇总第2期

汽车电子嵌入式精彩文章汇总第3期

【OS】AUTOSAR OS Event实现原理

【OS】AUTOSAR OS Spinlock实现原理(下篇)

【OS】AUTOSAR OS Spinlock实现原理(上篇)

CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗

TC3xx芯片CAN模块详解

AUTOSAR OS Alarm实现原理

AUTOSAR OsTask切换原理

TC3xx 芯片SPI模块详解

AUTSOAR ComStack如何实现PDU只收不发的

AUTOSAR OsStack监控原理



End


欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信

扫描二维码,关注我的公众号

评论
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 37浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 81浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 33浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 48浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 99浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 102浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 68浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 70浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 54浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 53浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 73浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦