MSP430同步串行通信SPI.pptVIP

  • 14
  • 0
  • 约5.7千字
  • 约 46页
  • 2017-06-06 发布于湖北
  • 举报
程序流程图 RX ISR 初始化SPI模块 初始化发送数据 MST_Data 判断发送缓冲是否为空, 若是,则发送第一个字符 判断发送缓冲是否为空, 为空说明上次发送完毕 判断本次接收到的字符 和上次发送是否相同, 相同则亮灯 发送数据自加1, 并赋值给发送缓冲 主机 RX ISR 初始化SPI模块 判断发送缓冲是否为空, 为空说明上次发送完毕 本次接收到的数据 赋值给发送缓冲 从机 主机——端口初始化 P8SEL |= BIT4+BIT5+BIT6; P8DIR |= BIT4+BIT5+BIT6; P1DIR |= BIT0 + BIT1; P1SEL |= BIT0 + BIT1; 选择P1.1~P1.0端口为输出 选择P1.1~P1.0端口为输出 选择P8.4~P8.6为外设功能 选择P8.4~P8.6端口方向为输出 主机——SPI模块初始化 UCB1CTL1 |= UCSWRST; UCB1CTL0|=UCMST+UCSYNC+ UCCKPL+UCMSB; UCB1CTL1 |= UCSSEL_2; UCB1BR0 = 2; UCB1BR1 = 0; UCB1IE |= UCRXIE; UCB1CTL1 = ~UCSWRST 选择SMCLK USCI_Bx模块逻辑复位 3线,8位,主机模式, 时钟极性高,MSB先发送 配置波特率 打开SPI中断 USCI_Bx复位释放 主机——其他配置 MST_Data = 0x01; SLV_Data = 0x00; P1OUT |= BIT1; __delay_cycles(100); while (!(UC B1IFGUCTXIFG)); UC B1TXBUF = MST_Data; 主机初始化数据 从机初始化数据 延时 判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕 发送第一个字符 从机选择引脚 主机——接收中断 #pragma vector=USCI_ B1_VECTOR __interrupt void USCI_ B1_ISR(void) { switch(__even_in_range(UC B1IV,4)) { case 0: break; case 2: while (!(UC B1IFGUCTXIFG)); if (UC B1RXBUF==SLV_Data) P1OUT |= 0x01; else P1OUT = ~0x01;? MST_Data++; SLV_Data++; UCB1TXBUF = MST_Data; __delay_cycles(500); break; case 4: break; default: break; } } 判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕 如果接收与发送相同,点亮LED 发送下一个字符 从机——端口初始化 P8SEL |= BIT4+BIT5+BIT6; P8DIR |= BIT4+BIT5+BIT6; P1REN |= BIT4; P1OUT |= BIT4; P1IES =~BIT4; P1IFG =~BIT4; P1IE |= BIT4; 使能P1.4内部电阻 选择P8.4~P8.6为外设功能 选择P8.4~P8.6端口方向为输出 P1.4上升沿捕获,进入中断 P1.4 IFG 清零 P1.4中断使能 同步串行通信SPI 内容提要 SPI总线协议 MSP430

文档评论(0)

1亿VIP精品文档

相关文档