你(们)好。
我正在开发一个具有 MSP430F5438A 的项目、该项目在 SPI 模式下作为主器 件工作、而8051微控制器则作为从器件工作。 从器 件的编程方式使其镜像通过 MOSI 引脚接收的数据并将其发送回 SOMI 引脚。 我需要使用该信号来进一步配置项目状态、但我没有从 SOMI 引脚获取所需的信号。 无论 CLK 和 TXBUFF 信号如何、我只会获得连续高电平。
我在3线制 SPI 模式下使用 USCI A0。
下面是我配置系统的方法:
//---- 定义引脚---
#define UCA0CLK BIT0//SPI_A0 CLK 引脚 p3.0
#define UCA0STE BIT3 //SPI_A0 STE 引脚3.3
#define UCA0SIMO BIT4 //SPI_A0 SIMO 引脚3.4
#define UCA0SOMI BIT5//SPI_A0 SOMI 引脚3.5
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//------ SPI 引脚配置---
//P3.0=UCA0CLK;P3.3=UCA0STE;P3.4=UCA0MOSI;P3.5=UCA0MISO
P3OUT |= UCA0STE; //到引脚 P3.0、3、4、5的高输出。 所有其他引脚为只读输入引脚。
P3DIR = 0x19 //端口引脚 P3.0、3、4配置为输出
P3SEL = 0x31 //选择 SPI A0 3线外设模块功能
//------ SPI 初始化---
UCA0CTL1 |= UCSWRST;//软件复位被启用
UCA0CTL0 |= UCMST + UCSYNC + UCMSB;//主模式;从器件低电平有效的3引脚 SPI;同步模式;MSB 优先
UCA0CTL1 |= UCSSEL_2;// BRCLK 源时钟为 SMCLK
UCA0BRW |= 0x0002;// f (位时钟)=f (BRCLK)/2
UCA0MCTL |= 0;//始终保持为零
UCA0CTL1 &=~UCSWRST;//机器就绪
UCA0IE |= UCRXIE;//接收中断使能
P3OUT |= UCA0STE;//设置 STE=1
P3OUT &=~UCA0STE; //设置 STE=0
一旦我设置"P3SEL=0x31"、SOMI 将给出高信号并且 RXBUF 接收器的返回值为0xFF。
我发现初始化有问题、因此我只尝试在输入 或输出方向设置 P3DIR、但当我将 SOMI 引脚设置为输入时、它就开始向我提供高电平信号。 即使尝试将 STE 短接至接地、以始终保持为零、因为从器件处于低电平有效状态、但结果不变。
是否有任何建议或需要更改计划?