第四章 MSP430通信接口3(内部集成电路(I2C)协议).ppt

第四章 MSP430通信接口3(内部集成电路(I2C)协议).ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序流程图 TX ISR 判断是否发送完 数组中所有数据 初始化I2C模块 初始化发送数组 TXData[ ] 进入无限循环, 设置要发送的数据, 发送起始条件 指针加1,继续发送 发送STOP条件 主机 ISR 初始化I2C模块 判断发送缓冲是否为空, 为空说明上次发送完毕 本次接收到的数据 赋值给指针指向的变量 从机 判断STOP条件是否发送, 若否,则等待 N Y 主从机接口电路图 主机模式——配置I2C模块 设置P8.5(SDA) P8.6(SCL) 为外设功能,输出 使能软件复位 I2C主机,同步模式 设置波特率 主模式初始化流程 void main(void) { WDTCTL = WDTPW + WDTHOLD; P8SEL |= BIT5+BIT6; P8DIR |= BIT5+BIT6; UCB1CTL1 |= UCSWRST; UCB1CTL0 = UCMST + UCMODE_3 + UCSYNC; UCB1CTL1 = UCSSEL_2 + UCSWRST; UCB1BR0 = 12; UCB1BR1 = 0; UCB1I2CSA = 0x48; UCB1CTL1 = ~UCSWRST; UCB1IE |= UCTXIE; } 初始化代码 使用SMCLK,保持软件复位 设置从机地址 清除软件复位,恢复运行 使能发送中断 主机——循环 while (1) { // Delay required between transaction for(i=0;i10;i++); // TX array start address PTxData = (unsigned char *)TxData; TXByteCtr = sizeof TxData; // I2C TX, start condition UCB0CTL1 |= UCTR + UCTXSTT; // Enter LPM0, enable interrupts __bis_SR_register(LPM0_bits + GIE); __no_operation(); // Ensure stop condition got sent while (UCB0CTL1 UCTXSTP); } 主机——发送中断 #pragma vector = USCI_B0_VECTOR __interrupt void USCI_B0_ISR(void) { switch(__even_in_range(UCB0IV,12)) { … case 12: // Vector 12: TXIFG if (TXByteCtr) // Check TX byte counter { UCB0TXBUF = *PTxData++; // Load TX buffer TXByteCtr--; // Decrement TX byte counter } else { UCB0CTL1 |= UCTXSTP; // I2C stop condition UCB0IFG = ~UCTXIFG; // Clear USCI_B0 TX int flag __bic_SR_register_on_exit(LPM0_bits); // Exit LPM0 } … } } MSP430在该模式下作为主控器,向从机发送数据。数据流向如下图所示: MSP430(主) I2

文档评论(0)

love + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档