查看: 6610|回复: 6

[教程] 求助MSP430G2硬件I2C的使用

[复制链接]
  • TA的每日心情
    无聊
    2016-11-8 14:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-8-30 15:26:36 | 显示全部楼层 |阅读模式
    分享到:
    有没有人用过MSP430G2系列的硬件I2C模块,自己看着数据手册调试了很久一直没调出来,最后被逼只好用了软件I2C。但还是想弄明白硬件是怎么用的,希望有用过的高手能分享一下代码
    回复

    使用道具 举报

  • TA的每日心情

    2018-1-24 13:36
  • 签到天数: 240 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-30 16:52:41 | 显示全部楼层
    建议你去帖子里面搜一下,不要漏掉以前的,,,,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-11-30 17:53
  • 签到天数: 193 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-8-30 17:38:28 | 显示全部楼层
    https://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55.aspx
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-12-31 13:14
  • 签到天数: 526 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-8-30 17:39:57 | 显示全部楼层
    其实一直觉得软件的比较好用···
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-11-30 17:53
  • 签到天数: 193 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-8-30 17:40:19 | 显示全部楼层
    1. //******************************************************************************

    2. //  MSP430G2xx3 Demo - USCI_B0 I2C Master TX single bytes to MSP430 Slave

    3. //

    4. //  Description: This demo connects two MSP430's via the I2C bus. The master

    5. //  transmits to the slave. This is the master code. It continuously

    6. //  transmits 00h, 01h, ..., 0ffh and demonstrates how to implement an I2C

    7. //  master transmitter sending a single byte using the USCI_B0 TX interrupt.

    8. //  ACLK = n/a, MCLK = SMCLK = BRCLK = default DCO = ~1.2MHz

    9. //

    10. //                                /|\  /|\

    11. //               MSP430G2xx3      10k  10k     MSP430G2xx3

    12. //                   slave         |    |        master

    13. //             -----------------   |    |  -----------------

    14. //           -|XIN  P1.7/UCB0SDA|<-|---+->|P1.7/UCB0SDA  XIN|-

    15. //            |                 |  |      |                 |

    16. //           -|XOUT             |  |      |             XOUT|-

    17. //            |     P1.6/UCB0SCL|<-+----->|P1.6/UCB0SCL     |

    18. //            |                 |         |                 |

    19. //

    20. //  D. Dang

    21. //  Texas Instruments Inc.

    22. //  February 2011

    23. //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10

    24. //******************************************************************************

    25. #include "msp430g2553.h"

    26. unsigned char TXData;

    27. unsigned char TXByteCtr;

    28. void main(void)

    29. {

    30. WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

    31. P1SEL |= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0

    32. P1SEL2|= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0

    33. UCB0CTL1 |= UCSWRST;                      // Enable SW reset

    34. UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;     // I2C Master, synchronous mode

    35. UCB0CTL1 = UCSSEL_2 + UCSWRST;            // Use SMCLK, keep SW reset

    36. UCB0BR0 = 12;                             // fSCL = SMCLK/12 = ~100kHz

    37. UCB0BR1 = 0;

    38. UCB0I2CSA = 0x48;                         // Slave Address is 048h

    39. UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation

    40. IE2 |= UCB0TXIE;                          // Enable TX interrupt

    41. TXData = 0x00;                            // Holds TX data

    42. while (1)

    43. {

    44.    TXByteCtr = 1;                          // Load TX byte counter

    45.    while (UCB0CTL1 & UCTXSTP);             // Ensure stop condition got sent

    46.    UCB0CTL1 |= UCTR + UCTXSTT;             // I2C TX, start condition

    47.    __bis_SR_register(CPUOFF + GIE);        // Enter LPM0 w/ interrupts

    48.                                            // Remain in LPM0 until all data

    49.                                            // is TX'd

    50.    TXData++;                               // Increment data byte

    51. }

    52. }

    53. //------------------------------------------------------------------------------

    54. // The USCIAB0TX_ISR is structured such that it can be used to transmit any

    55. // number of bytes by pre-loading TXByteCtr with the byte count.

    56. //------------------------------------------------------------------------------

    57. #pragma vector = USCIAB0TX_VECTOR

    58. __interrupt void USCIAB0TX_ISR(void)

    59. {

    60. if (TXByteCtr)                            // Check TX byte counter

    61. {

    62.    UCB0TXBUF = TXData;                     // Load TX buffer

    63.    TXByteCtr--;                            // Decrement TX byte counter

    64. }

    65. else

    66. {

    67.    UCB0CTL1 |= UCTXSTP;                    // I2C stop condition

    68.    IFG2 &= ~UCB0TXIFG;                     // Clear USCI_B0 TX int flag

    69.    __bic_SR_register_on_exit(CPUOFF);      // Exit LPM0

    70. }

    71. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2014-11-15 21:16
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-8-30 18:30:53 | 显示全部楼层
    一直觉得软的比较好用,硬的老出毛病。。不知道原因在哪儿。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-24 09:00
  • 签到天数: 205 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-5-26 13:17:51 | 显示全部楼层
    楼主有软件吧。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-22 02:53 , Processed in 0.178414 second(s), 27 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.