公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

TC275调试日志——GPIO配置

TC275调试日志——GPIO配置

凌风2018_版主_
Level 4

今天呢,最小系统配置先告一段落,等做好了再做说明。这一贴来进行GPIO的使用和配置。

首先回顾一下之前的时钟输出函数,我们在其中配置了输出时钟源以及分频等信息。但是遗漏了一个重要的问题,那就是输出引脚配置。因为以我之前XC200的经验,配置为通用输出就可以了,但是调试的时候并不行。。。所以有必要认真了解下aurix系列的GPIO工作方式。

GPIO口最通用的功能是作为IO口,即普通的输入输出。但是对于功能复杂的单片机,常常会对GPIO口做功能复用。不仅仅是驱动方式的复用,还有所服务的模块也有复用。首先我们来看一下GPIO口的基本结构。

1.png

图1:GPIO口基本结构

为了让大家方便理解,我截取了一张STM32的GPIO结构图,AURIX的结构也是差不多的。(找不到更详细的配图)

(1)输入输出驱动方式

首先说明输入输出的驱动方式,其实这和我们(硬件工程师)平时做调理电路一个道理。输入端一般要配置输入信号上拉或者下拉,二者其一,是为了给信号一个确定的电平。后面的触发器是为了将电压信号转换成确定的逻辑电平。而输出端的驱动一般可以配置为两种,开漏输出和推挽输出。开漏输出只有两种状态,就是低电平和高阻态,这种驱动方式一般需要外部上拉,适合于驱动大电流的负载(当然这个也是相对的)。推挽输出则既可以输出高电平也可以输出低电平,一般是用在高低电平快速切换的场合。

(2)输入输出信号读写

对于通用IO功能来说,输入信号是通过Pn_IN寄存器来读取的。aurix的GPIO口输入信号是独立的,因此不论端口配置怎样都可以直接读取该寄存器来得到端口电平。Aurix端口结构如图2所示:

图2.png

图2:aurix端口结构

从图上可以看出来,输出端信号复用比较多,有通用输出的寄存器Pn_OUT,还有七个可选的从ALT1-ALT7的输出复用。输入端的复用就少了,只有一个ALTIN。我们以一个端口为例,看看具体有什么功能,如图3;

3.png

图3:端口复用

如图3所示:我们看到输入端除了通用输入,还有两个复用功能,输出端则有5个,具体什么功能大家可以自己看。

这些端口的复用都需要大家进行配置,才能使用。配置端口复用的寄存器为:Pn_IOCR。该寄存器中的5bit位域PC用来具体控制每一个端口的复用类型,当然也包括上面说到的驱动类型。

表4:端口类型配置

4.png

如表4所示,我们可以对端口的输入上下拉,以及输出驱动,输出复用进行配置。在用到复用功能时,大家也可以根据相应复用类型进行配置。

(3)通用输出操作

我们说了通用输出的寄存器为Pn_OUT,配置好输出类型后,写入相应的值就可以在输出端输出对应的电平。但是一般不这么做,因为很多时候Pn_OUT反应的是输出口的状态,包括其他复用功能的输出。我们对端口进行写操作的时候,一般通过其他的寄存器,例如端口置位寄存器(Pn_OMSRx),端口清零寄存器(Pn_OMCRx),而寄存器Pn_OMR则控制着端口是否可以被置位、清零、翻转或者维持不变。在实际操作中,大家可以通过写入这些寄存器进行普通的IO功能输出。

这一贴的实例就是我们之前讲过的时钟输出函数,因为该功能用到了时钟输出引脚EXTCLK0和EXTCLK1,我们只用到了前者。这就是一个典型的端口复用,图3显示的就是支持时钟输出的端口。我们看到第七个输出复用为时钟输出,因此在端口配置的时候需要将对应的位域PC配置为0x16,这样才可以启用时钟输出功能。

因为时钟输出的实验还没有成功。。。按照理论配了,还是不行,原因也还没找到。这就是典型的理论和实际的差距,不过我感觉离成功不远了。做成以后会发一个实验的帖子。好了,今天就到这里,晚安,大家。


0 点赞
5069 次查看
5 评论