- 模块介绍
英飞凌TC2xx系列单片机的GPIO(通用输入输出)特征提供了高度的灵活性和控制能力,以适应各种汽车和工业应用的需求。
GPIO(通用输入输出)模块是一种多功能的I/O(输入/输出)系统,它允许单片机与外部设备进行数据交换。GPIO端口可以被配置为输入或输出模式,支持数字信号的读取和驱动。它们通常具有可编程的特性,如上拉/下拉电阻、推挽或开漏输出配置,以及中断和事件触发能力,使其在各种应用中都极为灵活。GPIO模块是单片机与外部世界交互的关键接口。
2.功能介绍
2.1模块特性如下
•宽范围的输入/输出电压:TC2xx的GPIO能够支持不同电压级别的输入和输出,这使得它们可以在多种电源环境下工作。
•多功能性:GPIO引脚不仅可以用作数字输入和输出,还可以被配置为其他功能,如定时器输入、PWM输出、通信接口(如CAN、LIN)的信号线等。
•配置灵活性:每个GPIO引脚可以通过软件配置其功能和特性,如驱动强度、转换速率、上/下拉、推/拉或开漏操作,以及TTL或CMOS/汽车输入电平的选择;。
•安全性:考虑到汽车应用对安全性的高要求,TC2xx的GPIO设计符合高安全标准,包括对故障和干扰的鲁棒性。紧急停止功能允许通过SMU或特殊端口引脚关闭可配置端口线的输出驱动器
•高电流驱动能力:某些GPIO引脚能够提供较高的输出电流,适用于驱动外部负载,如外部LED或继电器。
2.2 GPOI端口常用模式:
IfxPort_InputMode_undefined //浮空输入
IfxPort_InputMode_noPullDevice //无上拉输入
IfxPort_InputMode_pullDown //下拉输入
IfxPort_InputMode_pullUp //上拉输入
IfxPort_OutputMode_pushPull //推挽输出
IfxPort_OutputMode_openDrain //开漏输出
IfxPort_OutputMode_none //无上拉输出
每个端口引脚都可以配置为输入或输出模式,输入和输出模式切换是通过Pn_IOCR寄存器完成的,它启用或禁用输出驱动程序。如果外设单元使用GPIO端口线作为双向I/O线,则必须写入寄存器Pn_IOCR以进行输入或输出选择。Pn_IOCR寄存器控制输出驱动的驱动类型,并确定内部弱上拉、下拉或无输入拉设备是否在引脚上连接。
在输入模式下,输出驱动器关闭(高阻抗)。端口引脚处的实际电压电平通过施密特触发装置转换为逻辑0或1,并可通过只读寄存器Pn_IN读取。输入信号直接连接到外设单元的各种输入。
在输出模式下,输出驱动器被激活并驱动通过多路复用器提供到端口引脚的值。输出驱动器前面的输出多路复用器为GPIO端口选择信号源。如果引脚用作通用输出,则多路复用器由软件(Pn_IOCR寄存器)切换到输出数据寄存器Pn_OUT。软件可以通过单独的Pn_OMSR或Pn_OMCR寄存器设置或清除Pn_OUT中的位。Pn_OMSR/Pn_OMSRx和Pn_OMCR/Pn_OMCRx可以设置和清除Pn_OUT寄存器中的位。而Pn_OMR中的位允许Pn_OUT中的位被设置、清除、切换或保持不变。
TC27x的大多数数字GPIO线具有紧急停止逻辑。这种逻辑使得在紧急情况下单独断开输出并将它们置于定义良好的逻辑状态成为可能。在紧急情况下,引脚切换到输入功能,内部上拉装置连接或三状模态。紧急停止寄存器Pn_ESR决定在紧急情况下是否启用或禁用某个输出。
2.4GPIO寄存器概述:
Pn_OUT——端口输出寄存器
Pn_OMR——端口输出修改寄存器
Pn_IOCR0——端口n输入输出控制寄存器0
Pn_IN——端口输入寄存器
Pn_PDR0——端口Pad驱动模式0寄存器
Pn_ESR——端口n紧急停止寄存器
Pn_PDISC——端口 n引脚功能决策控制寄存器
Pn_PCSR——端口 n控制器选择寄存器
Pn_OMSR0——端口n输出修改设置寄存器0
Pn_OMCR0——端口n输出修改清除寄存器0
2.5 GPIO组起始地址和引脚数:
2.6 GPIO控制寄存器
2.6.1 端口输入/输出控制寄存器(Pn_IOCR)
Port Input/Output Control Registers选择GPIO端口引脚的数字输出和输入驱动功能和特性。通过相应的位域PCx(x=0-15)可以选择端口方向(输入或输出),输入上拉、下拉或无拉驱动,输出推拉或开漏功能。每个32位宽端口输入/输出控制寄存器控制4条GPIO端口线:
寄存器Pn_IOCR0控制Pn [3:0]端口线路
寄存器Pn_IOCR4控制Pn [7:4]端口线路
寄存器Pn_IOCR8控制Pn [11:8]端口线路
寄存器Pn_IOCR12控制Pn [15:12]端口线路
可以看到每个IOCR寄存器有4个位域,分别对应其控制的4个Pin脚,每个位域有5位,这5位表征的值参见下表
从表中我们可以看出:
位域的最高位PCx[4]为1时,则为输出,为0则该Pin脚为输入;
当Pin脚为输入时:PCx[1:0]表征该Pin脚的上下拉状态;
当Pin脚为输出时:PCx[3]表征该Pin脚的输出方式,0表示推挽输出,1表示开漏输出;
2.6.2 Pad驱动模式寄存器(Pad Driver Mode Register)
Pad Driver Mode Registers(PDR)用于控制输出时的驱动强度、翻转速度以及输入上下拉的电源电阻。每个Port端口有两个PDR寄存器,其中PDR0对应Pin0到Pin7,PDR1对应Pin8到Pin15。
具体来说,PDR寄存器的配置可以影响到端口的电气特性,例如:
•驱动强度:可以设置为高、中、低,以适应不同的负载要求。
• 翻转速度:可以设置为快速或慢速,以适应不同的信号传输速度需求。
• 输入上下拉:可以配置为启用或禁用内部上拉或下拉电阻,以适应不同的输入信号特性。
LVDS(Low Voltage Differential Signaling)Pad的控制涉及到特定的寄存器,这些寄存器允许开发者配置LVDS Pad的功能和特性。以下是一些与LVDS Pad控制相关的寄存器及其功能:
端口输入/输出控制寄存器 (IOCR):这些寄存器用于选择GPIO端口引脚的数字输出和输入驱动的功能和特性。对于配置为输出的端口,可以通过相关的PDx位字段(例如,寄存器Pn_PDR0/1)配置速度等级。
驱动模式寄存器 (PDR):对于配置为输出的端口,可以通过PDx位字段配置端口的驱动模式,决定推挽或漏极开路功能。
Pin Function Decision Control Register引脚功能决策控制寄存器:TC3xx GPIO线的pad结构提供了选择数字输入或模拟ADC输入功能。对于具有LVDS功能的pad对,控制LVDS特性,并允许在LVDS和CMOS模式之间切换。
端口输出寄存器 (OMR):该寄存器与端口输出寄存器 (OUT) 配合使用,可以单独置位、清零或取反端口输出寄存器中的相应位,从而修改各端口线上的逻辑状态。
端口输出修改寄存器:此寄存器允许通过设置特定的位来修改端口输出寄存器中的相应位,实现对端口输出的置位、清零或取反。
端口输出改变寄存器和端口输出清除寄存器:这些寄存器用于直接修改端口输出的状态,以控制端口引脚的电平。
端口输入寄存器 (IN):该寄存器反映端口输入引脚上的逻辑电平,可以读取端口的输入状态。
2.6.3 端口输出寄存器(Port Output Register)
端口输出寄存器在被Pn_IOCRx选择作为输出时确定GPIO引脚的值。将0写入Pn_OUT,Px(x=0-15)位的位置在相应的输出引脚处提供低电平。当对应的位写入1时,输出一个高电平。通过分别将适当的值写入端口输出修改集寄存器(Pn_OMSR)或端口输出修改清除寄存器(Pn_OMCR),可以单独设置或清除Px输出引脚。Pn_OUT的Px位也可以在同一写入中使用寄存器Pn_OMR设置,清除或切换
2.6.4 端口输出修改寄存器(Port Output Modification Register)
端口输出修改寄存器包含控制位,通过操纵输出寄存器可以单独设置、清除或切换单个端口线的逻辑状态
Port Output Modification Set Register
Port Output Modification Clear Register
2.6.5 端口输入寄存器(Port Input RegisterGPIO)
引脚的逻辑电平可以通过只读端口输入寄存器Pn_IN读取。
读取Pn_IN寄存器总是独立地返回GPIO引脚上的当前逻辑值,无论该引脚被选为输入还是输出。
3.代码功能实现
下列代码通过一些GPIO初始化和配置实现简单的点亮第一个小灯和流水灯效果。