AUTOSAR项目实战(6)-Port及Dio模块配置实践

汽车电子嵌入式 2025-02-10 07:06

目录


前言

汽车电子嵌入式开始更新全新的AUTOSAR项目实战专栏内容,从01搭建一个AUTOSAR工程,内容会覆盖AUTOSAR通信协议栈、存储协议栈、诊断协议栈、MCAL、系统服务、标定、Bootloader、复杂驱动、功能安全等所有常见功能和模块,全网同步更新开发设计文档(后期也会更新视频内容)。本文为MCAL系列配置-PortDio模块配置实践。

《AUTOSAR项目实战(5)-MCU模块配置实践》一文我们实现了MCU模块的配置,本文将实现PortDio模块的配置,配置了这三个模块后,理论上我们的MCU芯片就能正常跑起来了,能完成最简单的LED点灯的功能了!

环境

AUTOSAR BSW ToolVector

AUTOSAR MCAL ToolEB

Hardware Platform: Infineon Tricore TC387

Build Tool: Tasking

Debug Tool: UDE

AUTOSAR项目实战系类文章

AUTOSAR项目实战(1)-数据地址访问对齐问题分析

AUTOSAR项目实战(2)-内存访问异常问题分析

AUTOSAR项目实战(4)-系统总线及外设错误问题分析

AUTOSAR项目实战(3)-OsCounter访问权限问题分析

AUTOSAR项目实战(5)-MCU模块配置实践



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

正文

1.硬件分析

如下图所示,我们的开发板使用了TC387芯片的很多Port引脚,但是,无论哪一个Port引脚要么是输入引脚,要么就是输出引脚。所以,我们选了一个输入引脚(CAN Rx, P20.7)和已给输出引脚(CAN Tx, P20.8)作为本文的示例来讲解,其他的Port引脚配置类似。

 



确定要配置的Port Pin引脚后,我们需要查看对应芯片手册(Infineon-AURIX_TC38x-UserManual-v02_00-EN.pdf)的引脚信息。



配置Port Pin的时候需要上图的信息。


2.Port模块配置


对于输入Pin脚,主要配置以下两个参数:

PortInInputPullResistor: 配置输出引脚是否需要MCU内部上拉还是下拉,还是不需要上下拉。


至于MCU的输入引脚什么时候需要上下拉,什么时候不需要上下拉,我们可以尝试问问ChatGPT.


2.1 什么是上下拉

问题1MCU的Port引脚为输入引脚时,什么时候要配置为上拉,什么时候要配置为下拉,什么时候配置为没有上下拉


ChatGPT回答

MCU 设计中,将 Port 引脚配置为输入模式 时,是否需要上拉、下拉或无上下拉,取决于具体应用场景。以下是不同情况下的选择依据:


1. 配置为上拉(Pull-up

适用情况

·默认输入为高电平(逻辑 1,防止浮空状态。

·开关按键、拨动开关等:通常一端接地,按下时接地,不按时需要上拉到高电平。

·I²C 总线(SDASCLI²C 规范要求必须有上拉电阻,否则通信无法正常工作。

·外部信号可能是开漏(Open-Drain)或集电极开路(Open-Collector)输出,需要上拉提供逻辑 1

·低功耗应用:上拉比下拉通常消耗更少的功耗,减少电流泄漏。


示例

·按键输入(按下接地,松开为高电平):

o配置 MCU 内部上

o或使用外部上拉电阻(如 10kΩ


MCU Pin ----[10kΩ]---- VCC

                        |

                     [SW]

                        |

                     GND


2. 配置为下拉(Pull-down

适用情况

·默认输入为低电平(逻辑 0,防止浮空状态。

·开关按键、拨动开关等:通常一端接 VCC,按下时接 VCC,不按时需要下拉到低电平。

·某些总线或协议要求默认低电平,如部分 SPI 片选信号(CS)。

·MCU 的特殊功能要求默认低电平,例如 Boot 模式选择(某些芯片上电时通过某个引脚的状态决定启动模式)。

示例

·按键输入(按下为高电平):

o配置 MCU 内部下

o或使用外部下拉电阻(如 10kΩ

                   

                   VCC

                      |

                    [SW]

                       |

MCU Pin ----[10kΩ]---- GND


3. 无上下拉(Floating/Hi-Z

适用情况

·外部有明确的信号源驱动(如传感器、通信信号等)。

·多设备共用一个信号线,不应强制上拉或下拉,例如 UART RX 引脚、SPI MISO(主机输入)

·高阻态(Hi-Z)应用,如多设备共用某个 I/O 端口(总线),需要避免影响其他设备驱动信号。

·某些低功耗模式下,避免不必要的电流消耗(避免上拉或下拉导致漏电流)。

示例

·UART RX 引脚(由外部设备驱动,不需要内部上拉/下拉)

·SPI MISO(主机输入

·外部传感器数据输入端(由传感器提供高低电平)

·ADC(模拟输入),通常不使用上拉/下拉,以免影响测量准确性


4. 何时避免浮空(未定义状态

如果输入引脚未连接到明确的高/低电平(悬空),可能会导致:

·电平不稳定(受环境噪声影响),误触发中断或错误读取数据。

·不必要的功耗,由于 CMOS 输入级在悬空时可能进入高阻状态,导致输入级 MOS 管部分导通,产生漏电流

一般情况下,不建议让输入引脚悬空,除非有特定应用需要(如 ADC 模拟输入)。


5.

场景

配置

按键(常开,按下接地)

上拉

按键(常开,按下接 VCC

下拉

I²C 总线(SCL/SDA

上拉(必须)

SPI MISO(主设备输入)

无上下拉

UART RX

无上下拉

传感器数据输入

无上下拉(通常由传感器驱动)

低功耗应用

无上下拉或根据需要选择最优方案

需要默认高电平

上拉

需要默认低电平

下拉

场景

配置


如果不确定,可以:

1.查看设备手册(Datasheet,看是否推荐上拉/下拉。

2.观察信号是否悬空,如果 MCU 读到不稳定值(0/1 交替),通常需要上拉或下拉。

3.考虑功耗,在低功耗应用中,选择合适的上下拉方式以减少电流损耗。


2.2 CAN Rx是否应该配置为上下拉

问题2MCUCAN控制器的Rx输入引脚,应该配置为上拉还是下来,还是不需要配置上下拉?


ChatGPT回答MCU CAN 控制器 RX(接收)引脚 通常不需要配置上下拉,即保持浮空(Hi-Z


原因分

1.CAN 总线是差分信号

oCAN 通信使用 CAN_H(高电平)  CAN_L(低电平) 两根信号线进行差分传输,而 Rx 直接接收 CAN 收发器(CAN Transceiver)的输出,其信号是由收发器决定的。

o由于 CAN 本质上是一个 物理层收发器驱动的信号MCU 不需要内部上拉或下拉 来维持电平。


2.CAN 收发器的输出已被设计为有效信号

oCAN 接收器(PHY,如 TJA1050SN65HVD230)的 RX 引脚是推挽输出(Push-Pull,信号稳定,不需要 MCU 额外提供上拉/下拉。

o外部 CAN 收发器已经决定了 CAN RX 的逻辑电平,如果 MCU 再加上拉或下拉,可能会影响通信质量。


3.错误配置可能导致的问题

o上拉(Pull-up:会影响 RX 信号,可能使接收到的信号失真或增加不必要的电流消耗。

o下拉(Pull-down:可能导致 CAN_RX 低电平滞留,影响数据接收,甚至影响 CAN 总线的正常通信。


正确的配

·MCU  CAN RX 引脚应配置为输入模式(Input Floating / Hi-Z,不加内部上拉或下拉。


·需要一个 外部 CAN 收发器(如 TJA1050SN65HVD230MCP2551),收发器的 RX 输出直接连 MCU RX,它已经提供了稳定的信号。


CAN 总线 ---> CAN 收发器(TJA1050---> MCU CAN RX (浮空输入)


CAN_H ---+

                 |  差分信号

CAN_L ---+


CAN 收发器

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

TXD <--- MCU CAN TX

RXD ---> MCU CAN RX (无上下拉)

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


总结

 MCU  CAN RX 引脚应该配置为浮空输入(Hi-Z),不使用上拉或下拉
 CAN 收发器已经提供了稳定的输出信号,不需要额外干预
 不要配置内部上拉或下拉,否则可能影响 CAN 通信的稳定性


综上所述,P20.7这个CAN Rx输入引脚的PortInInputPullResistor参数配置为NO PULL.

PortPinInputPadLevel: 配置Pin脚数字电路逻辑电平标准。现在的MCU一般都是用CMOS工艺,所以一般都选着CMOS_AUTOMOTIVE.




对于输出Pin脚,主要配置以下三个参数:

PortPinInitalMode: 这个需要参考第一章节中的引脚分析,MCUPort引脚一般都具有复用功能,我们使用Pin 20.8作为CAN00Tx引脚,所以需要选着ALT 5.


PortPinLevelValue: 配置输出引脚的默认电平,这个根据实际需求来配置即可。


PortPinOutPinDriveMode: 配置输出引脚是开漏(Open drain)输出,还是推挽(Push Pull)输出


2.3 什么是开漏和推挽输出

问题3MCU的输入引脚什么时候配置为开漏(Open drain)输出,什么时候配置为推挽(Push Pull)输出


ChatGPT回答 MCU 设计中,开漏(Open-Drain  推挽(Push-Pull 是两种常见的 GPIO 输出模式。选择哪种模式,取决于具体的应用需求。以下是详细的分析


1. 开漏输出(Open-Drain

工作原

·仅能输出低电平(0),不能主动输出高电平(1

· MCU 输出 低电平(0 时,内部 MOSFET 导通,引脚被拉低到 GND

· MCU 输出 高电平(1 时,内部 MOSFET 关闭引脚处于高阻态(Hi-Z),需要外部上拉电阻 提供高电平

·典型的上拉电阻值:4.7kΩ ~ 10kΩ(根据电流需求调整)


适用场

场景

原因

I²C 总线(SDASCL

I²C 需要多设备连接,必须使用 开漏+上拉电阻 形成线与逻辑(Wired-AND)。

多个设备共享信号线(如中断 INT、复位 RESET

确保多个设备能共同拉低信号线,而不会发生短路。

外部晶体管驱动电路(如驱动继电器、LED

通过外部上拉到较高电压(如 12V),从而控制更大电流。

异步通讯接口,如 SMBus1-Wire

需要开漏以支持线与逻辑和双向通信。

外部设备要求开漏(如某些 EEPROM LCD 驱动)

设备数据手册要求使用开漏。


电路示

MCU GPIO ----+---- 4.7kΩ ---- VCC

                           |

                      [设备]

                           |

                         GND


2. 推挽输出(Push-Pull


工作原

·能够主动输出高电平(1)和低电平(0

·内部有两个 MOSFET(一个 P-MOS 负责输出高电平,一个 N-MOS 负责输出低电平)

·无需外部上拉电阻,输出电流能力更强


适用场

场景

原因

普通 GPIO 控制(如 LED、蜂鸣器)

直接驱动负载,无需额外上拉电阻。

SPIUARTCAN 等高速通讯接口

需要稳定的高低电平转换,提高信号质量。

PWM 输出(驱动马达、伺服等)

推挽输出可以直接驱动负载,提高效率。

片选信号(CS)和控制信号(如 RESET, ENABLE

需要快速、可靠的高低电平切换,避免悬空状态。

高速信号传输(如时钟信号)

推挽模式提供更强的驱动能力,提高信号完整性


电路示

MCU GPIO ---- 设备输入


无需额外电阻,直接连接目标设备


3.选择开漏还是推挽?

场景

推荐模式

I²C 通信(SDA, SCL

开漏 + 上拉

多设备共享信号(如外部中断)

开漏 + 上拉

控制 LED、蜂鸣器

推挽

SPIUARTCANPWM 等高速信号

推挽

复位信号 RESET

开漏 + 上拉

外部晶体管或功率驱动(MOSFET, 继电器)

开漏 + 上拉


·开漏输出(Open-Drain

o适用于 多个设备共享信号线、I²C、低速信

o必须外接上拉电

o仅能主动输出 低电平(0,高电平由外部上拉提供

·推挽输出(Push-Pull

o适用于 普通 GPIOSPIUARTPWM、高速信

o无需上拉电

o能主动输出高低电平,驱动能力强


综上所述,我们的P20.8 CAN Tx应该配置为推挽输出,一般没有特殊功能或者用途都默认配置为推挽输出。开漏输出需要外部上拉电路支持。


3.Dio模块配置


Dio封装了Port模块,配置也很简单,如上图所示,按照Port组(e.g. DioPort_20)依次配置需要的Channel即可。


CAN00_RX这个Dio Chanel就对应 --> P 20.7这个输入引脚。

CAN00_TX这个Dio Channel就对应 --> P 20.8 这个输入引脚。



Dio配置生成代码Dio_Cfg.h中就会有Dio Channel的宏定义,我们在使用Dio_ReadChannelDio_WriteChannel读写Port口的时候,需要用到Channel号。


5.Dio模块的使用

AUTOSAR架构下Dio模块的使用一般有两种方式。


5.1 其他模块引用Dio Channel

如下图所示,CanTrcv模块需要配置Can Rx引脚,引用的就是Dio模块的CAN00_Rx Channel.



CanTrcv的静态代码会直接调用Dio_ReadChannel读取CAN Rx的电平信号。


5.2 直接通过IoHwAb模块封装Dio接口使用

如果用户需要直接读写Port引脚,就会使用IoHwAb模块封装Dio接口。


Example

#include “Dio.h”void IoHwAb_Write_CAN00_Tx(Dio_LevelType Level){    Dio_WriteChannel(DioConf_DioChannel_CAN02_TX, Level);}


注意AUTOSAR架构软件,SWC调用IoHwAb的接口需要经过RTE接口,这些AUTOSAR方法论的内容,我们后面再讲解。


6.上板测试

如下图所示,CanTrcv会使用到Dio_ReadChannelDio_WriteChannel读写Port引脚。



在使用Dio, Port模块的实际工程中经常会遇到这样的问题:


SWC开发工程师抱怨:我读不到Port引脚的高低电平啊?我控制不了Port引脚的电平啊?


这个时候,除了需要排查SWC的控制逻辑和调用接口是否正确外,我们可以通过观测Port引脚模块的寄存器直接看Port的输入输出是否符合我们的要求,这比使用万用表外部测量电平要简单点,当然,前提是有调试仿真环境。





7.总结

本文详细介绍了AUTSOAR架构下的PortDio模块的配置和使用,看起来好像很简单,实际工程在bringup的时候,Port模块的配置至关重要,Port模块没有配置正确就会导致各种CAN, LIN, ETH, SPI等模块功能异常,极大的影响开发进度,所以需要我们真正理解Port模块的配置和调试。



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监控原理

AUTOSAR架构下ICU唤醒详解

CanNm报文的触发发送详解

Can报文能发不能收问题分析

TC3xx芯片PFlash的ECC校验问题补充

AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解

什么是Copy Table及如何使用Copy Table

AUTOSAR架构下EcuM_StartupTwo函数功能详解

符合AUTOSAR标准的RTAOS-Schedule Tables详解(上篇)

AUTOSAR OS Schedule Table实现原理

符合AUTOSAR标准的RTAOS-Schedule Tables详解(下篇)

TJA1145收发器重要功能介绍

AUTOSAR架构下基于TJA1145收发器通信丢失问题分析

AUTOSAR架构下LIN报文发送失败问题分析

AUTOSAR项目实战(1)-数据地址访问对齐问题分析

AUTOSAR项目实战(2)-内存访问异常问题分析

AUTOSAR项目实战(4)-系统总线及外设错误问题分析

AUTOSAR项目实战(3)-OsCounter访问权限问题分析

AUTOSAR项目实战(5)-MCU模块配置实践

AUTOSAR架构下的Interrupt详解(上篇)

AUTOSAR架构下的Interrupt详解(下篇)



End


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

汽车电子嵌入式

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

评论 (0)
  • 北京时间3月11日,国内领先的二手消费电子产品交易和服务平台万物新生(爱回收)集团(纽交所股票代码:RERE)发布2024财年第四季度和全年业绩报告。财报显示,2024年第四季度万物新生集团总收入48.5亿元,超出业绩指引,同比增长25.2%。单季non-GAAP经营利润1.3亿元(non-GAAP口径,即经调整口径,均不含员工股权激励费用、无形资产摊销及因收购产生的递延成本,下同),并汇报创历史新高的GAAP净利润7742万元,同比增长近27倍。总览全年,万物新生总收入同比增长25.9%达到1
    华尔街科技眼 2025-03-13 12:23 105浏览
  • 一、行业背景与需求痛点智能电子指纹锁作为智能家居的核心入口,近年来市场规模持续增长,用户对产品的功能性、安全性和设计紧凑性提出更高要求:极致空间利用率:锁体内部PCB空间有限,需高度集成化设计。语音交互需求:操作引导(如指纹识别状态、低电量提醒)、安全告警(防撬、试错报警)等语音反馈。智能化扩展能力:集成传感器以增强安全性(如温度监测、防撬检测)和用户体验。成本与可靠性平衡:在复杂环境下确保低功耗、高稳定性,同时控制硬件成本。WTV380-P(QFN32)语音芯片凭借4mm×4mm超小封装、多传
    广州唯创电子 2025-03-13 09:24 99浏览
  • 各大Logo更新汇报 | NEW百佳泰为ISO/IEC17025实验室,特为您整理2025年3月各大Logo的最新规格信息。USB™▶ USB Type-C/PD 互操作性MacBook Pro 16英寸(Apple M4 Max 芯片,36GB 内存–1TB SSD–140W USB-C电源适配器)或 MacBook Pro 16英寸(M4 Pro芯片,24GB内存–512 TB SSD–140W USB-C电源适配器),这些型号支持USB4 80Gbps传输速度和 140W EPR功率。需尽
    百佳泰测试实验室 2025-03-13 18:20 112浏览
  • 一、行业背景与用户需求随着健康消费升级,智能眼部按摩仪逐渐成为缓解眼疲劳、改善睡眠的热门产品。用户对这类设备的需求不再局限于基础按摩功能,而是追求更智能化、人性化的体验,例如:语音交互:实时反馈按摩模式、操作提示、安全提醒。环境感知:通过传感器检测佩戴状态、温度、压力等,提升安全性与舒适度。低功耗长续航:适应便携场景,延长设备使用时间。高性价比方案:在控制成本的同时实现功能多样化。针对这些需求,WTV380-8S语音芯片凭借其高性能、多传感器扩展能力及超高性价比,成为眼部按摩仪智能化升级的理想选
    广州唯创电子 2025-03-13 09:26 90浏览
  • 文/杜杰编辑/cc孙聪颖‍主打影像功能的小米15 Ultra手机,成为2025开年的第一款旗舰机型。从发布节奏上来看,小米历代Ultra机型,几乎都选择在开年发布,远远早于其他厂商秋季主力机型的发布时间。这毫无疑问会掀起“Ultra旗舰大战”,今年影像手机将再次被卷上新高度。无意臆断小米是否有意“领跑”一场“军备竞赛”,但各种复杂的情绪难以掩盖。岁岁年年机不同,但将2-3年内记忆中那些关于旗舰机的发布会拼凑起来,会发现,包括小米在内,旗舰机的革新点,除了摄影参数的不同,似乎没什么明显变化。贵为旗
    华尔街科技眼 2025-03-13 12:30 145浏览
  • 在海洋监测领域,基于无人艇能够实现高效、实时、自动化的海洋数据采集,从而为海洋环境保护、资源开发等提供有力支持。其中,无人艇的控制算法训练往往需要大量高质量的数据支持。然而,海洋数据采集也面临数据噪声和误差、数据融合与协同和复杂海洋环境适应等诸多挑战,制约着无人艇技术的发展。针对这些挑战,我们探索并推出一套基于多传感器融合的海洋数据采集系统,能够高效地采集和处理海洋环境中的多维度数据,为无人艇的自主航行和控制算法训练提供高质量的数据支持。一、方案架构无人艇要在复杂海上环境中实现自主导航,尤其是完
    康谋 2025-03-13 09:53 108浏览
  • 前言在快速迭代的科技浪潮中,汽车电子技术的飞速发展不仅重塑了行业的面貌,也对测试工具提出了更高的挑战与要求。作为汽车电子测试领域的先锋,TPT软件始终致力于为用户提供高效、精准、可靠的测试解决方案。新思科技出品的TPT软件迎来了又一次重大更新,最新版本TPT 2024.12将进一步满足汽车行业日益增长的测试需求,推动汽车电子技术的持续革新。基于当前汽车客户的实际需求与痛点,结合最新的技术趋势,对TPT软件进行了全面的优化与升级。从模型故障注入测试到服务器函数替代C代码函数,从更准确的需求链接到P
    北汇信息 2025-03-13 14:43 108浏览
  • 现代旅游风气盛行,无论国内或国外旅游,导航装置无疑就是最佳的行动导游;在工作使用上也有部分职业(如:外送服务业)需要依靠导航系统的精准,才能将餐点准确无误的送至客户手上。因此手机导航已开始成为现代生活上不可或缺的手机应用之一。「它」是造成产品潜在风险的原因之一外送服务业利用手机导航,通常是使用手机支架固定在机车上,但行进间的机车其环境并不一定适用于安装手机,因行进间所产生的振动可能会影响部分的功能,进而导致受损。您是否曾在新闻报导中看过:有使用者回报在机车上使用手机架导航会造成相机无法开启?苹果
    百佳泰测试实验室 2025-03-13 18:17 113浏览
  • 在追求更快、更稳的无线通信路上,传统射频架构深陷带宽-功耗-成本的“不可能三角”:带宽每翻倍,系统复杂度与功耗增幅远超线性增长。传统方案通过“分立式功放+多级变频链路+JESD204B 接口”的组合试图平衡性能与成本,却难以满足实时性严苛的超大规模 MIMO 通信等场景需求。在此背景下,AXW49 射频开发板以“直采+异构”重构射频范式:基于 AMD Zynq UltraScale+™ RFSoC Gen3XCZU49DR 芯片的 16 通道 14 位 2.5GSPS ADC 与 16
    ALINX 2025-03-13 09:27 76浏览
  • DeepSeek自成立之初就散发着大胆创新的气息。明明核心开发团队只有一百多人,却能以惊人的效率实现许多大厂望尘莫及的技术成果,原因不仅在于资金或硬件,而是在于扁平架构携手塑造的蜂窝创新生态。创办人梁文锋多次强调,与其与大厂竞争一时的人才风潮,不如全力培养自家的优质员工,形成不可替代的内部生态。正因这样,他对DeepSeek内部人才体系有着一套别具一格的见解。他十分重视中式教育价值,因而DeepSeek团队几乎清一色都是中国式学霸。许多人来自北大清华,或者在各种数据比赛中多次获奖,可谓百里挑一。
    优思学院 2025-03-13 12:15 115浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦