This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您 好!
对msp430F449 采用SPI通信与时间芯片,初始化设置后空闲状态SIMO始终为高电平,强制低电平也不行,用逻辑分析仪监视初始化U0TCTL发送控制寄存器的“STC”设置为1选择3线模式,就为高电平了,不知道什么原因?请高位工程师帮忙分析一下!
发现是由于P3.1-P3.3端口设置与 SPI通信设置冲突导致:
P3SEL |= BIT1 + BIT2 + BIT3; //SPI引脚启用,作为片内外设的对外接口
P3DIR |= BIT1 + BIT3; //MO,CLK设为输出
P3DIR &= ~BIT2; //MI为输入
P3DIR |= BIT0;
SPI通信主机设置:
//UxCTL控制寄存器
U0CTL |= SWRST; // 复位SPI功能
U0CTL |= MM; // 主模式
U0CTL |=SYNC; // 同步 SPI模式
U0CTL |=CHAR; // 8位数据模式
//UxCTL发送控制寄存器
U0TCTL |=STC;
//U0TCTL &= ~SSEL0;
U0TCTL |= SSEL0; // SSEL1 时钟源选择ACLK
U0CTL &= ~CKPL; // 时钟空闲状态下为低电平
U0CTL &= ~CKPH; //时钟相位选择=0
//UxBR0、UXBR1波特率选择寄存器0和1
U0BR0 = 0x03; // 03使用32768Hz晶体波特率32768/9600=3.413
U0BR1 = 0x00; //00
U0MCTL = 0x4A; // 小数波特率调整因子
//模块功能使能寄存器
ME1|=USPIE0; //
U0CTL &= ~SWRST; // 使能SPI功能,从复位模式下运行
//中断使能
//IE1|= URXIE0; //UTXIE0; //
//IE1|= UTXIE0;
//中断标志寄存器
IFG1 &=~URXIFG0; // 清除接收和发送中断标志
//IFG1 &=~UTXIFG0; //接收中断标志位默认为零
不知道怎么解决?
您好!按照您说的建议试验了,还是不行,空闲时一直高电平有效!
//P3DIR |= BIT1 + BIT3; //MO,CLK设为输出
//P3DIR &= ~BIT2; //MI为输入
您是需要将这3个管脚复用吗?
例程中在配置SPI时只配置了P3SEL这个寄存器,这就是我刚开始为什么让您将另外两行代码注释掉的原因。
例程的参考价值同样很重要。
配置SPI +
P3SEL |= BIT1 + BIT2 + BIT3; //SPI引脚启用,作为片内外设的对外接口
P3DIR |= BIT1 + BIT3; //MO,CLK设为输出
P3DIR &= ~BIT2; //MI为输入
必须配置才能通讯!
您好,之前有一个地方回复错您了。
这个框图表示的是相关IO口的方向控制。
可以看到其实不需要配置IO口的方向寄存器就能控制相关IO口在SPI模式下的方向。
例程中也确实没有配置方向寄存器。
还有例程中是先配置USART模块,最后才进行与IO相关的配置的。