4.5内部集成电路(I2C)协议重点.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主机模式——配置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(主) I2C应用示例——主机模式 I2C应用示例——主机模式 主模式数据发送的时序格式 S 从器件地址 W A 数据 A 数据… A/ A P 起始位,用于指示传输的开始。 结束位,用于指示传输的结束。 第一字节的前七位包含接收器件的从地址,第8位表示为写操作。 每发送完一个字节数据,接收数据的器件就发送一个应答位 每发送完一个字节数据,接收数据的器件就发送一个应答位 每发送完一个字节数据,接收数据的器件就发送一个应答位 每发送完一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档