使用DPI接口时,根据LCM IC支持的情况,可以选择16bus、18bus传输RGB格式文件,在GPIO 部分分为R、G、B分别对应8个GPIO(GPIO20~46期间),客户采用DPI接口需要根据选择的bus
方式进行配置,推荐RGB端口全部配置为对应的复选模式,并设置为OUT输出。
采用DBI接口,有两种模式选择,一种是选择共用DPI的bus脚+DPI控制线,另一种是共用nand data pin+CPU 控制线。
不同ESD方式需要注意的方面
目前我司HDMI/MHL的相关code和driver都是有集成在codebase中的,要使用的话,只需要只需要在对应的ProjectConfig.mk文件中开启,并且在dct中配置好对应的引脚定义即可。
大部分TE问题是由于没有正常开启TE所导致,首先检查TE是否开启。
89平台使用内部TE,lcm driver中只需要在init过程中打开LCM TE即可,一般是写0x35寄存器,部
}
User Button硬件连接如下图所示:当按键被按下,PB9检测到低电平,相反PB9被3.3V 拉高。
硬件连接如下图所示:高电平点亮LED。
要想将PB9管脚配置成输入模式,程序所需如下步骤:(必须的)
第一步:配置系统时钟。见F103x RCC寄存器配置
除此之外,还需将GPIO外设时钟打开。
第二步:配置中断向量表。决定将程序下载到RAM中还是FLASH中。以后讲。
第三步:配置GPIO的模式。输入模式还是输出模式。STM32_及讲解——LED跑马灯已讲过。
第四步:读该管脚上的电平状态。需要介绍一个库函数。
涉及到GPIO_IDR寄存器,如下所示
经过上面4步,就可以检测PB9管脚的电平状态。
按键按下,PB9管脚应该是低电平,怎么才能验证,最简单的方法是:当按键被按下,点亮所有LED。
还有个问题:PB9的初始状态是什么?或者说GPIO_Configuration函数后PB9管脚上是高电平还是低电平?
这要看GPIO_InitStructure结构体的GPIO_Mode成员变量初始化为什么,如果为上拉,则PB9管脚为高电平;如果为下拉,则PB9管脚为低电平。
GPIO管脚内部如图:
当GPIO初始化为输入上拉模式,由上图可知:该端口向外输出高电平,即:ODR对应位为1
当GPIO初始化为输入下拉模式,由上图可知:该端口向外输出低电平,即:ODR对应位为0
如何调试:在下面两处处设个断点。
可以看到:当GPIO设置成输入上拉模式时,等待GPIO初始化完毕,该管脚ODR9为1
2. 在main函数中,设置一个断点。
全速执行(F5),按住User Button不放,可以看到GPIOB_IDR的IDR9=0。当放开按键时,再单步调试(F10),
1. GPIO配置成输入模式时,最好配置成浮空输入(ODR对应位为0)。上拉、下拉只是该管脚初始化完对外表现的电平状态。
2. GPIO配置成输入模式,只关心GPIO_IDR寄存器。检测该管脚外部输入的是高电平还是低电平。
3. GPIO配置成输出模式,只关心GPIO_ODR寄存器。通过该管脚向外部输出高电平还是低电平。
}
函数解释:GPIO的初始化函数,该函数的作用是对io进行初始化。
(2)GPIO_InitStruct,GPIO的初始化相关结构体。该结构体里的成员变量决定了我们具体的初始化参数。以下进行说明:
GPIO_Speed:指定IO最快翻转速度,也就是当使用IO产生频率的最大速度。有四种模式:
函数解释:读取io输入管脚的值
返回值:输入管脚的值 Bit_SET(高电平),Bit_RESET(低电平)
函数解释:读取输入io数据,该函数用于读取一个io分组的所有数据
返回值:一个io端口的所有数据(输入状态)
函数解释:读取io输出管脚的值
返回值:输出管脚的值 Bit_SET(高电平),Bit_RESET(低电平)
函数解释:读取输出io数据,该函数用于读取一个io分组的所有数据
返回值:一个io端口的所有数据(输出状态)
函数解释:对io管脚进行置位(输出高电平)。这个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作。在这种情况下,在读和修改访问时发生一个IRQ中断是没有危险的。
函数解释:对io管脚进行复位(输出低电平)。这个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作。在这种情况下,在读和修改访问时发生一个IRQ中断是没有危险的。
函数解释:对某一位进行写入操作。
(3)BitVal:写入高电平或者低电平(Bit_RESET:写入低电平 Bit_SET:写入高电平)
函数解释:对GPIO端口进行写入操作,适用于对统一端口的多个管脚的写入。
(2)BitVal:写入高电平或者低电平(Bit_RESET:写入低电平 Bit_SET:写入高电平)
函数解释:翻转指定的GPIO口,如果当前io是高电平,则变为低电平。如果当前io是低电平,则变为高电平。
}