你(们)好
我一直在尝试设置、并使用端口2上的 UCB0使用 I2C 和 SPI。 目的是在运行期间在这两个器件之间切换。
我面临的问题是、启用 I2C 后无法使 SPI 工作(如果不将 I2C 映射到端口2、则 SPI 工作。) -似乎端口映射造成了问题,但我并不完全确定(我已经查看了错误,找不到任何已知的相关问题)。
我要做的是:在切换到 SPI 之前、我复位模块并清除两者之间的端口引脚状态。
首先、我设置端口方向、状态等、然后我进行端口映射。 完成该操作后、我会初始化 SPI 或 I2C 的 UCB0、包括相关设置并启用模块(UCB0CTL1 &=~UCSWRST)
我想知道它是否与 UCBOCLK 和 UCB.S 一起使用、因为它们是一样的呢?
下面是如何完成映射的片段? 在运行时映射方面、我是否有误解?
////////////////////////////////////////////// 将 SPI 映射到 port2.x *////////////////////////////////
_disable_interrupt ();
PMAPPWD = 0x02D52;//将 SPI 映射到 port2.x
P2MAP0 = PM_UCB0CLK;
P2MAP1 = PM_UCB0SOMI;
P2MAP2 = PM_UCB0SIMO;
P2MAP3 = PM_NONE;
P2OMAP4 = PM_NONE;
PMAPPWD=0;
_enable_interrupt ();
////////////////////////////////////////////// 将 I2C 映射到 port2.x *//////////////////////////////////
_disable_interrupt ();
PMAPPWD = 0x02D52;//将 I2C 映射到 port2.x
P2MAP0 = PM_NONE;
P2MAP1 = PM_NONE;
P2MAP2 = PM_NONE;
P2MAP3 = PM_UCB0SDA;
P2OMAP4 = PM_UCB.S;
PMAPPWD=0;
_enable_interrupt ();
BR mm