主题中讨论的其他器件:DK-TM4C123G
工具/软件:TI C/C++编译器
您好!
我对休眠和 RTC 不太了解。 在我的项目中、无论何时打开系统、我都需要显示日期和时间。 但在这种情况下、我不知道如何使用 RTC。 我不知道如何做到这一点。 如果有人知道他 的信息,请帮助我。
谢谢、
Alphy
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.
工具/软件: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
您好、先生、
谢谢先生、您提供的从地址只是正确的。 我能够读取数据并将其写入寄存器。 但是、如果我将0x05写入寄存器0x02、将0x08写入寄存器0x03、那么在从寄存器读取时、我将从寄存器0x02获取0x00、从0x03获取0x05。 同样、对于所有其他寄存器、我将获取先前的写入值。 为什么写入寄存器的值会出现在下一个寄存器中。 该程序是否存在任何问题。
我面临的另一个问题是 RTC。 RTC 不会改变值。 我在 IC 的 X1和 X2端子上连接了一个32.768kHz 晶体、并使编程中的森引脚处于低电平(振荡器使能)。 当设置为‘1’时,振荡器暂停。 当设置为‘0’时,振荡器在 tOSC 时间之后开始运行)。 但在读取寄存器时不会获得任何时间变化输出。 是否有任何其他配置用于启用 RTC。 如果此论坛中的任何人都使用 FM3164 FRAM、请告诉我我们需要做什么来使 RTC 正常工作。
谢谢、
Alphy