在 NXP LPC1769 中设置引脚
Setting up a pin in NXP LPC1769
我只需要修改另一个 port/pins 的源代码。
我尽可能多地和 NXP UM10360 一起学习。
我有那个设置;
从 "CMSIS_CORE_LPC17xx" 使用的头文件:LPC17xx.h
LPC_PINCON->PINSEL0 |= 0x2<<14; //P0.7 > SCK1
LPC_PINCON->PINSEL0 |= 0x2<<16; //P0.8 > MISO1
LPC_PINCON->PINSEL0 |= 0x2<<18; //P0.9 > MOSI1
和
我想用另一个(从 SSP1 到 SSP0)替换这些引脚。
P0.7 will be P0.15
P0.8 will be P0.17
P0.9 will be P0.18
根据手册,我尝试了这个(功能 10);
LPC_PINCON->PINSEL0 &= ~((0x3 << 31)|(0x3 << 30));//P0.15, SCK0
LPC_PINCON->PINSEL0 |= ((0x2 << 31)|(0x2 << 30)); //ENable clock
LPC_PINCON->PINSEL1 &= ~((0x2 << 3)|(0x2 << 2));//P0.17, MISO0
LPC_PINCON->PINSEL1 &= ~((0x2 << 5)|(0x2 << 4));//P0.18, MOSI0
但是,SPI 设备在此之后停止了。上面的原始设置运行良好,并通过逻辑分析仪向我展示了不错的 SPI 信号。但是,有了新的引脚和相应的设置,我只能在逻辑分析仪上启用 CSN、MISO 和 SCK(无脉冲)。
就是这个:
我做错了什么?
(我对NXP MCU没有经验,请多多包涵。)
已编辑:
记录一下,最后还是自己找的,问题解决了;
LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0, P0.15
LPC_PINCON->PINSEL1 |= 0x2<<2; //MISO0, P0.17
LPC_PINCON->PINSEL1 |= 0x2<<4; //MOSI0, P0.18
LPC_GPIO0->FIODIR |= (1<<16); //SSEL/CSN, P0.16
这是逻辑分析仪的结果;
根据记录,我可以通过这种方式设置一个有效的解决方案;
LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0, P0.15
LPC_PINCON->PINSEL1 |= 0x2<<2; //MISO0, P0.17
LPC_PINCON->PINSEL1 |= 0x2<<4; //MOSI0, P0.18
LPC_GPIO0->FIODIR |= (1<<16); //SSEL/CSN, P0.16
我只需要修改另一个 port/pins 的源代码。 我尽可能多地和 NXP UM10360 一起学习。
我有那个设置;
从 "CMSIS_CORE_LPC17xx" 使用的头文件:LPC17xx.h
LPC_PINCON->PINSEL0 |= 0x2<<14; //P0.7 > SCK1
LPC_PINCON->PINSEL0 |= 0x2<<16; //P0.8 > MISO1
LPC_PINCON->PINSEL0 |= 0x2<<18; //P0.9 > MOSI1
和
我想用另一个(从 SSP1 到 SSP0)替换这些引脚。
P0.7 will be P0.15
P0.8 will be P0.17
P0.9 will be P0.18
根据手册,我尝试了这个(功能 10);
LPC_PINCON->PINSEL0 &= ~((0x3 << 31)|(0x3 << 30));//P0.15, SCK0
LPC_PINCON->PINSEL0 |= ((0x2 << 31)|(0x2 << 30)); //ENable clock
LPC_PINCON->PINSEL1 &= ~((0x2 << 3)|(0x2 << 2));//P0.17, MISO0
LPC_PINCON->PINSEL1 &= ~((0x2 << 5)|(0x2 << 4));//P0.18, MOSI0
但是,SPI 设备在此之后停止了。上面的原始设置运行良好,并通过逻辑分析仪向我展示了不错的 SPI 信号。但是,有了新的引脚和相应的设置,我只能在逻辑分析仪上启用 CSN、MISO 和 SCK(无脉冲)。
就是这个:
我做错了什么? (我对NXP MCU没有经验,请多多包涵。)
已编辑:
记录一下,最后还是自己找的,问题解决了;
LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0, P0.15
LPC_PINCON->PINSEL1 |= 0x2<<2; //MISO0, P0.17
LPC_PINCON->PINSEL1 |= 0x2<<4; //MOSI0, P0.18
LPC_GPIO0->FIODIR |= (1<<16); //SSEL/CSN, P0.16
这是逻辑分析仪的结果;
根据记录,我可以通过这种方式设置一个有效的解决方案;
LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0, P0.15
LPC_PINCON->PINSEL1 |= 0x2<<2; //MISO0, P0.17
LPC_PINCON->PINSEL1 |= 0x2<<4; //MOSI0, P0.18
LPC_GPIO0->FIODIR |= (1<<16); //SSEL/CSN, P0.16