LPC18S37(TFBGA100)自定义板SCU与GPIO引脚配置咨询
LPC18xx引脚配置问题解答
一、SCU端口与GPIO端口的区别
你之前使用的LPC1769没有SCU模块,LPC18xx的SCU全称为系统控制单元(System Control Unit),负责所有引脚的复用、上下拉、速率等基础配置:
- SCU端口/引脚:对应芯片的物理引脚分组,就是数据手册里标注的P0P9、PAPF共16个端口,和封装的引脚编号(比如你提到的F8)是一一对应的,是所有引脚配置的入口。
- GPIO端口/引脚:是物理引脚复用为GPIO功能时对应的外设编号,这个映射关系是芯片设计时固定的,无法修改,必须通过官方引脚映射表查询,和SCU端口没有直接的数值对应规律。
二、示例中D3_GPIO_PIN=28的来源
你贴的示例里D3对应的SCU端口是0xD(也就是PD端口)的14号引脚,查询LPC18xx官方引脚映射表可知,该引脚复用为GPIO功能(对应FUNC4)时,绑定的GPIO外设是GPIO6端口的28号引脚,所以直接赋值28,没有推算公式,完全来自手册给定的映射关系。
三、GPIO3[5](BGA引脚F8)的配置宏
查询LPC18S37 TFBGA100封装的引脚映射表可知,F8引脚对应的SCU端口为P1(数值0x1)的15号引脚,复用为GPIO3[5]的功能号为FUNC0,作为普通推挽输出使用MD_PLN模式即可,对应的宏定义如下:
#define LED_SCU_CONFIG 0x1, 15, MD_PLN, FUNC0 #define LED_SCU_PIN 15 #define LED_SCU_PORT 0x1 #define LED_GPIO_PORT 3 #define LED_GPIO_PIN 5 #define LED_GPIO_MASK (1 << LED_GPIO_PIN)
实际初始化调用代码为:
// 配置引脚复用为GPIO、设置引脚模式 scu_pinmux(LED_SCU_CONFIG); // 设置GPIO方向为输出 GPIO_SetDir(LED_GPIO_PORT, LED_GPIO_MASK, 1); // 如需点亮LED,追加下面的代码(假设高电平点亮) // LPC_GPIO_PORT->SET[LED_GPIO_PORT] = LED_GPIO_MASK;
内容的提问来源于stack exchange,提问作者Sener
相关产品推荐
相关产品推荐

