This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2553:带有DS1307 RTC的msp430g2553

Guru**** 2537220 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/575978/msp430g2553-msp430g2553-with-ds1307-rtc

部件号:MSP430G2553

我从TI论坛获得了此代码。 我尝试将其与Maxim Electronics的DS1307 RTC模块连接。 我可以发送从属地址,但当我尝试发送注册地址时,代码被卡住。  

有人能帮我解决这个问题吗? 我猜UCB0TXIFG没有准备好。

unsigned char read (unsigned char registerAddr)
{
unsigned char receivedByte =0;
UCB0I2CSA = 0xD0;//从地址为069h
while (UCB0CTL1 & UCTXSTP);//确保停止条件已发送

UCB0CTL1 |= UCTR + UCTXSTT;// UCBI2I启动条件与UTXIFG = 0;

UCBI,且UCB0 //UCB0TXIFG立即设置

为UCB0TXBUF = registerAddr;//write registerAddr in TX buffer while


((IFG2 & UCB0TXIFG)== 0); //代码卡在这里。 它不会继续UCB0CTL1


&=~UCTR;//清除接收
UCB0I2CSA = 0xD1的I2C TX标志;//从属地址为069h
UCB0CTL1 || UCTXSTT;//重复启动
期间(UCB0CTL1和UCTXSTT);//启动条件已发送? RXBuffer已满?


UCB0CTL1 || UCTXSTP;
while (IFG2 & UCB0RXIFG)==0);//等待TX缓冲区为空并传输
//print("hello\r\n");
receivedByte = UCB0RXBUF;// I2C停止条件
返回接收的字节

;} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Navin:
    将来请使用代码格式工具以获得更好的响应率。 这次我会为您做这个。 :-)

    您不使用中断的原因是什么? 使用它们可以更好地控制i2c。

    您似乎没有从从属设备接收ACK,您能否检查是否是这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外,
    您的I2C是否设置为重复启动?

    最好是您可以发布事务的逻辑分析器快照。  

    请查看此AppNote,它也可能有助于澄清问题。

    http://www.ti.com/lit/an/slaa734/slaa734.pdf 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Cameron,

    同一设备正在与PIC16F887配合使用。 实施方式与此类似。 我没有尝试使用中断。 是否有可用的示例代码? 中断如何实现更大程度的控制? 请您解释一下。 感谢您格式化代码! 我将从下一次开始采纳您的建议。

    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    是,设置为重复启动。 请参阅行号19。 我将检查逻辑分析器并向您发送波形。

    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Navin:
    您是否能够获得逻辑分析仪的屏幕截图?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Navin,
    除非您很快回复,否则我需要关闭此项。