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.

[参考译文] 在 TM4C123中启用 RTC

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/817540/rtc-enabling-in-tm4c123

器件型号:TM4C123GH6PZ
主题中讨论的其他器件:DK-TM4C123G

工具/软件:TI C/C++编译器

您好!

我对休眠和 RTC 不太了解。 在我的项目中、无论何时打开系统、我都需要显示日期和时间。 但在这种情况下、我不知道如何使用 RTC。 我不知道如何做到这一点。 如果有人知道他 的信息,请帮助我。

谢谢、

Alphy

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

    在中有一个使用休眠模块的示例:

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c123g\hibernate"

    此示例是为具有 OLED 显示屏的开发板编写的。 该板不再可用。 但是、您可以查看该示例、了解它们如何使用休眠模块来休眠和唤醒器件。

    另请查看 TivaWare 外设驱动程序用户指南第15.3节中的简单示例程序;

    C:\ti\TivaWare_C_Series-2.1.4.178\docs\SW-TM4C-DRL-UG-2.1.4.178.pdf

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

    您好!

    我将外部 FRAM (FM3164)用于 RTC。 我使用 i2c 通信执行了该程序、但我获得了错误状态0x0000000C、输出为垃圾值。 此错误状态的含义。 为什么要来这里、我在 SCL 和 SDA 线路中使用上拉电阻(4.7K)。

    我要附上以下代码、

    #define RTC_SLAVE_ADDRESS 0xD0
    void FRAM_I2C_Config ()
    {
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_I2C0));
    
    
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIPB_GPIOB
    );
    
    配置 GPIO2TOB_GPIO2B_GPIO2 (!
    ROM_GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2);
    
    ROM_GPIOPinConfigure (GPIO_PB3_I2C0SDA);
    ROM_GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_3);
    
    
    ROM_I2CMasterInitExpClk (I2C0_BASE、SysCtlClockGet ()、TRUE);//设置 I2C 命令的时钟速度,ture=400kHz,fals=100kHz*/
    
    }
    int main()
    {
    system_init();
    while (1)
    {
    
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x00);//RTC 控制
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x01);//CAL 控制
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x02);//秒
    
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x03);//分钟
    
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x04);//小时
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x05);//天
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x06);//日期
    TimerBuffer[0]= FRAM_RTCRad_Bck (0x07);//月
    TimerBuffer[0]= FRAM_RTCRead_Bck (0x08);//年
    
    }
    
    
    
    
    
    
    
    《unsigned char FRAM_RTCRead_Bck (unsigned char ctrl_reg_addrss)》{volatile unsigned int error_status = 0;unsigned char read_Bck_value = 0;/******* 将写入位置发送到 FRAM /
    ROM_I2CMasterSlaveAddrSet (I2C0_BASE、RTC_SLAVE_ADDRESS、false);// I2C 处于主传输模式、true=接收模式、false =传输模式
    
    ROM_I2CMasterDataPut (I2C0_BASE、CTRL_ADDRSS);// MSB 地址:iterasterByte_I2CM0_I2CM0_BASE
    
    
    (I2CM2CM0_I2CM0_BASE);CM2CM2CM0_IN_IN_IN_IN_IN_RIST_START (CM0_I2CM0_I2CM0_I2CM0_I2CM0_RISTER_IN_START);// CM0_IN_IN_IN_IN_IN_IN_IN_IN_IN
    
    I2C_MASTER_CMD_BURST_SEND_FINISH);
    while (ROM_I2CMasterBusy (I2C0_BASE);
    ERROR_STATUS = ROM_I2CMasterErr (I2C0_BASE);
    
    /******* 阅读 FRAM 的相关信息 /
    ROM_I2CMasterSlaveAddrSet (I2C0_BASE、RTC_SLAVE_ADDRESS、TRUE);// I2C 处于接收模式、true=接收模式、false =传输模式
    
    ROM_I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_RIV_START);//开始接收
    时(ROM_I2CM0_BUST_RETURN
    
    
    );
    
    
    //从 I2CM0_I2CM0_I2CM0_BASE
    
    (I2CM0_I2CM0_I2CM0_I2CM0_I2CM0_I2CM0_I2CM0_BASE = I2CM0_PRIM_PRIM_PRIM_RETURN);//
    

    请告诉我出现该错误的原因以及如何解决该问题。

    谢谢、

    Alphy

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

    0xC 错误意味着从器件没有应答发送。 我怀疑您使用的从器件地址错误。 TivaWare 库需要7位地址、并附加 R/W 位。 要使用的正确地址可能为0x68 (0xD0 >> 1)。

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

    您好、先生、

    谢谢先生、您提供的从地址只是正确的。 我能够读取数据并将其写入寄存器。 但是、如果我将0x05写入寄存器0x02、将0x08写入寄存器0x03、那么在从寄存器读取时、我将从寄存器0x02获取0x00、从0x03获取0x05。 同样、对于所有其他寄存器、我将获取先前的写入值。 为什么写入寄存器的值会出现在下一个寄存器中。 该程序是否存在任何问题。

    我面临的另一个问题是 RTC。 RTC 不会改变值。 我在 IC 的 X1和 X2端子上连接了一个32.768kHz 晶体、并使编程中的森引脚处于低电平(振荡器使能)。 当设置为‘1’时,振荡器暂停。 当设置为‘0’时,振荡器在 tOSC 时间之后开始运行)。 但在读取寄存器时不会获得任何时间变化输出。 是否有任何其他配置用于启用 RTC。 如果此论坛中的任何人都使用 FM3164 FRAM、请告诉我我们需要做什么来使 RTC 正常工作。  

    谢谢、

    Alphy

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

    抱歉、德州仪器不生产  FM3164 FRAM 器件、我也没有这方面的经验。 也许这个论坛的一些成员以前使用过它、但是我没有看到任何引用这个器件的其他帖子。 最好联系该器件的制造商。