打印
[其它产品/技术]

英飞凌Aurix2G TC3XX Port&Dio模块详解

[复制链接]
1016|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
英飞凌Aurix2G TC3XX Port&Dio模块详解
本文主要介绍Infineon Aurix2G TC3XX系列芯片Port和Dio模块硬件原理、MCAL相关配置和部分代码实现。

模块介绍
任何一款芯片,都有几十上百个引脚,也就是我们常说的I/O(Input/Output),这些引脚形成了芯片和控制板之间的连接。芯片的供电、调试、晶振输入以及板级外设的连接,都要依赖这些引脚。



在这些引脚种类中,Port(端口)是芯片与板上其他外设或逻辑电路交互的重要引脚,用于芯片发出控制信号或接收外部信号。通过GPIO模式或各类通讯模式,对板载设备进行控制,比如通过GPIO模式进行板载设备的供电使能,通过SPI协议访问板上的其他外设芯片,通过RGMII协议与以太网收发器进行数据交互等。这里提一下,引脚一般只能负责主板之内的通信,跨板级的通信由于信号传输能力的问题,一般是通过收发器与外界进行交互,比如MCU将以太网数据通过引脚传输给板上的以太网收发器芯片Phy,Phy再通过网线将数据传输出去。

Aurix TC3XX系列芯片具有丰富的Port连接,而且每个Pin脚具有多种功能复用,提供了丰富的实现方式,支持多种几乎所有板级引脚通讯协议。当我们需要使用某些引脚的时候,只需要进行相关的Port配置,在外设中就可以直接使用了。下面我们就来介绍Aurix TC3XX系列芯片的Port内部原理,各个控制寄存器,以及如何通过MCAL进行引脚功能配置。



使用特权

评论回复
沙发
慢动作|  楼主 | 2024-6-30 21:31 | 只看该作者
功能介绍
2.1 特性介绍
TC3XX系列中引脚是分组的,一组引脚称为Port,每个Port有最多16个Pin脚。具体的引脚资源情况要参考对应芯片选型的DataSheet手册,下图是TC375的引脚Map图。



TC3XX的Port具有如下特性:

每个Port控制最多16个Pin脚;
软件能够控制每个Pin脚的输出;
输出修改寄存器易于清除,设置和切换单Pin脚和Pin脚的波形不影响其他Pin脚的状态;
软件能够读取每个Pin脚的输入值;
多路复用多达7个输出模式;
支持外设直接控制;
控制Pin脚的驱动特性,如驱动强度,偏移率,上拉/下拉,推挽或开路漏极操作,选择TTL或CMOS/自动输入电平;
紧急停止功能允许SMU或或通过Pin关闭Pin脚输出;
对于具有LVDS功能的Pad对,它可以控制LVDS特性,并允许在LVDS和CMOS之间切换模式;
在减少引脚数的封装中,端口模块可以禁用所选引脚;

使用特权

评论回复
板凳
慢动作|  楼主 | 2024-6-30 21:31 | 只看该作者
Port内部结构
TC3XX系列有多组Port(比如TC375有14组),每组Port有最多16个Pin,每个Pin的输入输出以及控制模式都可独立配置。每个Pin脚内部结构如下图。

从图中我们可以看到,每个Pin脚包括一个Port Slice用于对引脚进行模式和输出控制,一个PAD用于与外界进行输入输出。

每个Pin脚都可以被配置为输入或者输出,通过Pn_IOCR寄存器进行切换。当配置为输入时,输出连接将被切断,可通过Pn_IN寄存器读取Pin脚的状态值;当配置为输出时,根据对应的输出模式(GPIO,HW_OUT,ALT1,ALT2…等),进行对应的输出连接。输入端是直连的,也就是说无论输出还是输入模式,都可以通过输入端读取Pin脚的状态。


使用特权

评论回复
地板
慢动作|  楼主 | 2024-6-30 21:32 | 只看该作者
当引脚配置为输出时,可通过配置多路复用选择器,同样也是通过配置Pn_IOCR寄存器进行输出模式控制。当输出模式配置为GPIO时,可通过Pn_OUT寄存器来控制Pin脚状态;当配置为ALT1~ALT7任意一种时,则根据该Pin脚的实际输出连接,由外设进行控制,比如TC375 DataSheet中P00.0,配置为ALT1为GTM控制;还有一种输出模式比较特殊,即最下边的HW_OUT控制模式,当Pin脚配置为该输出时,由外设直接控制,比如RGMII/RMII/MII信号,AD输出信号,与ALT不同的是,需要额外通过PCSR寄存器使能。

另外当输出模式设置为GPIO时,还可以通过位操作寄存器来进行设置。包括位设置寄存器Pn_OMSR和Pn_OMSRx(x=0,4,8,12),位清除寄存器Pn_OMCR和Pn_OMCRx(x=0,4,8,12),以及位位操作寄存器Pn_OMR。其中位设置寄存器只能对输出位进行置位,也就是Pin脚拉高,位清除寄存器只能进行拉低。位操作寄存器除了能够进行拉高拉低,还能进行翻转操作(toggle),就不需要预先读取引脚状态。

使用特权

评论回复
5
慢动作|  楼主 | 2024-6-30 21:32 | 只看该作者
大部分引脚还有紧急停止功能(Emergency Stop),能够在紧急情况下与输出连接断开,成为一个输入引脚。急停功能由System Control Unit(SCR),负责控制,可选择Safety Management Unit(SMU)或者P33.8(A)、 P21.2(B)作为急停触发源,急停触发后所有配置急停使能的引脚都会执行急停操作,关闭输出。SCU内部关于急

使用特权

评论回复
6
慢动作|  楼主 | 2024-6-30 21:33 | 只看该作者
Port控制寄存器
关于Port的原理部分其实内容比较简单,大致就是输入和输出,以及输出功能的配置,但是在使用过程中还是存在一些坑的,尤其是在使用高速SPI、RGMII/RMII/MII时,信号驱动能力和EMC等问题较难处理。下面我们就来介绍Port控制寄存器,并详细说明其控制功能。

使用特权

评论回复
7
慢动作|  楼主 | 2024-6-30 21:33 | 只看该作者
输入输出控制寄存器(Port Input/Output Control Registers,IOCR)
首先是Port的输入输出控制寄存器,该寄存器控制的功能比较多,包括Pin脚输入输出方向、输入上下拉配置、输出推挽或开漏配置、输出功能选择配置等。每个Port端口具有4个IOCR寄存器,对应Pin脚关系如下:

Pn_IOCR0: Pn.[3:0]

Pn_IOCR4: Pn.[7:4]

Pn_IOCR8: Pn.[11:8]

Pn_IOCR12: Pn.[15:12]

我们以Pn_IOCR0为示例,说明寄存器结构和内容。

使用特权

评论回复
8
慢动作|  楼主 | 2024-6-30 21:33 | 只看该作者
我们可以看到每个IOCR寄存器有4个位域,分别对应其控制的4个Pin脚,每个位域有5位,这5位表征的值参见下表。

使用特权

评论回复
9
慢动作|  楼主 | 2024-6-30 21:33 | 只看该作者
从表中我们可以看出:

位域的最高位PCx[4]为1时,则为输出,为0则该Pin脚为输入;
当Pin脚为输入时
PCx[1:0]表征该Pin脚的上下拉状态;
当Pin脚为输出时
PCx[3]表征该Pin脚的输出方式,0表示推挽输出,1表示开漏输出;
PCx[0:2]表征该Pin脚的输出功能选择,0表示GPIO功能17分别对应ALT1ALT7;
这里有些地方需要注意,如果配置为输入上拉,在外部阻抗较小的情况下是可能输出虚高电平的,如果硬件明确该引脚需要输出低,则就会出现问题。另外对于一些硬件场景,比如使用I2C通讯时,对于所有主从设备,一般外部是有公共上拉的,因此这时候MCU作为主机,输出如果配置为推挽,就会导致通讯失败,需要配置为开漏。

使用特权

评论回复
10
慢动作|  楼主 | 2024-6-30 21:34 | 只看该作者
驱动模式寄存器(Pad Driver Mode Register,PDR)
驱动模式寄存器负责控制输出时的驱动强度、翻转速度以及输入上下拉的电源电阻。每个Port端口有两个PDR寄存器,其中PDR0对应Pin0Pin7,PDR1对应Pin8Pin15。每个PDR寄存器中包括两部分内容,分别是输出控制的PDx和输入控制的PLx,其寄存器结构如下。


使用特权

评论回复
11
慢动作|  楼主 | 2024-6-30 21:34 | 只看该作者
从图中我们可以看到每个Pin脚有一个PDx和一个PLx,都占两个位宽。

其中PDx控制了输出时的驱动强度和翻转能力,驱动强度和翻转能力越高,对抗外部阻抗的能力就越强,信号的波形就越方正,作为牺牲,功耗就会拉高,并且产生的信号辐射和干扰(EMC)就会越高。因此选择怎样的驱动强度和翻转能力,要具体取决于引脚的翻转频率,外部阻抗和EMC需求,比如SPI时钟较高,达到了30MHz,那对应的驱动强度就应该调高,否则信号波形跳变达不到要求,就会导致对端采样出错,通信失败;而对于GMII这样的高速以太网通信,时钟一般高于100MHz,这时候容易产生高辐射,超出EMC要求的标准,反而需要适当降低驱动强度,甚至需要修改硬件电路。

使用特权

评论回复
12
慢动作|  楼主 | 2024-6-30 21:34 | 只看该作者
关于驱动强度和翻转能力,TC3XX的不同Pin脚具有不同的驱动速度,包括RFAST、FAST、SLOW,这是硬件资源情况,每个Pin脚类型需要查询对应的DataSheet,比如下图中P00.8为SLOW。

使用特权

评论回复
13
慢动作|  楼主 | 2024-6-30 21:37 | 只看该作者
然后对于不同驱动速度的引脚,PDx的含义不同,每个PDx有两个bit位,对应PDx.0和PDx.1,具体情况参考下面对应的表格。比如有一个RFast Pin脚,我想配置位RGMII模式,则PDx=11b。





使用特权

评论回复
14
慢动作|  楼主 | 2024-6-30 21:37 | 只看该作者
另外需要注意的是,SpeedGrade越小,表示对应的强度越高,功耗和EMC等级也就越高,RGMII属于例外。

然后我们再回到PAD寄存器的PLx,PLx表征的是输入时的上下拉电源和电阻情况,每个PLx也是两个bit位宽。具体的配置情况查询下表。

使用特权

评论回复
15
慢动作|  楼主 | 2024-6-30 21:38 | 只看该作者
差分控制寄存器(LVDS Pad Control Register,LPCR)
TC3XX系列芯片的Port支持差分信号功能,比如通过Hssl协议与外设进行信号交互时,此时数据采用的是差分信号,因此引脚要配置为差分信号模式。

每个Port有8个LPCR寄存器,每个寄存器控制一对Pin脚,相邻的两个Pin组成一对差分Pin脚。差分信号控制寄存器中,[07]位为输入差分控制,[715]位为输出差分控制,位[7]为输入输出公用位。

使用特权

评论回复
16
慢动作|  楼主 | 2024-6-30 21:39 | 只看该作者
REN_CTRL:输入控制选择,为0时表示普通Pin控制,1表示由HSCT控制,也就是Hssl协议使用;

RX_EN:输入控制使能位,为1表示使能接收LVDS,0表示CMOS;

TERM:接收接地模式,0表示使用芯片外接电阻接地,1表示内部连接一个100Ω电阻接地;

LRXTERM:芯片测试阶段的可编程接地电阻设置,不允许用户修改的;

LVDSM:LVDM-M模式使能,0表示默认使用LVDS-H模式,1表示使用LVDS-M模式,可降低数据速率到160Mbps,以降低静态电流;

PS:选择该Pin脚对的外部供电Vext,0表示3.3V,1表示5V;

TEN_CTRL:输出控制选择,为0时表示普通Pin控制,1表示由HSCT控制,也就是Hssl协议使用;

TX_EN:输出控制使能位,为1表示使能接收LVDS,0表示CMOS;

VDIFFADJ:LVDS输出幅值调节,可用来调节输出幅值,调节能力参考DataSheet中Vod;

使用特权

评论回复
17
慢动作|  楼主 | 2024-6-30 21:39 | 只看该作者


VOSDYN:VOS控制静态/动态回环调节,不允许用户修改;

VOSEXT:VOS控制内部/外部回环调节,不允许用户修改;

TX_PD:TC3XX中未使用该位,TX_EN可表征发送LVDS开关;

TX_PWDPD:发送端下电下拉,该功能禁用或启用LVDS下拉电阻;上电时应用程序代码必须禁用TX下拉电阻与;使用LVDS下电配置时,如果需要,必须启用下拉功能;

使用特权

评论回复
18
慢动作|  楼主 | 2024-6-30 21:39 | 只看该作者
Pin脚AD功能选择寄存器(Pin Function Decision Control Register,PDISC)
TC3XX系列中部分Pin脚是支持AD输入的,也就是将Pin复用为AD采样引脚,比如P40.0复用为AN24。如果复用为AD引脚,那Port端无法再去读取引脚的输入,而是由ADC模块来负责采样读取。

每个Port端口有一个PDISC寄存器,16个位域各控制一个引脚。

使用特权

评论回复
19
慢动作|  楼主 | 2024-6-30 21:39 | 只看该作者
PDISx:Pinx的输入控制,0表示数字输入,为普通Pin脚,1表示模拟输入,ADC Pin脚;

使用特权

评论回复
20
慢动作|  楼主 | 2024-6-30 21:40 | 只看该作者
Pin脚控制选择寄存器(Pin Controller Select Register,PCSR)
前面我们提到,部分引脚是可以由外设直接控制的,比如RGMII输出,SMU的FSP输出,SCR(standby核)的控制。对于这类引脚,是需要通过配置PCSR寄存器使能的,否则外设无法控制。

每个Port端口有1个PCSR寄存器,其结构如下。


SELx:Pinx控制选择,0表示不使能外设控制,1表示使能。

LCK:该位是一个只读位,为1时表示数据正在向SCR核传递,无法修改PCSR寄存器,为0则可修改。

PCSR寄存器的使用还是需要注意的,尤其在以太网通信中,输出端Pin脚是需要配置该寄存器为1的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

699

帖子

0

粉丝