[文章]

WIFI-IoT开发板RTC时钟模块功能实现

2020-11-27 16:33:48  290 WiFi_IoT RTC
分享
1
1.1 RTC时钟模块硬件准备                                                                                                               图4.1-1  RTC时钟模块

图4.1-2  RTC时钟模块在WiFiIoT套件上的连接

1.2 RTC时钟模块硬件介绍


RTC时钟模块使用I2C接口为I2C0,对应管脚连接说明:
SDA -----底板的TX ----- GPIO_13
SCL -----底板的RX ------ GPIO_14


1.3 RTC时钟模块功能软件实现

RTC时钟模块通过I2C协议进行通信
1. 首先初始化I2C配置,需要调用两个函数,分别是:
hi_u32 hi_i2c_init(hi_i2c_idx id, hi_u32 baudrate);
hi_u32 hi_i2c_set_baudrate(hi_i2c_idx id, hi_u32 baudrate);
以下对这两个函数进行详细介绍:
l hi_u32 hi_i2c_init(hi_i2c_idx id, hi_u32 baudrate);
此函数为I2C初始化函数。

hi_i2c_idx idI2C硬件设备选择,取值范围为hi_i2c_idx枚举类型,如下:
  1. typedef enum {

  2.     HI_I2C_IDX_0,

  3.     HI_I2C_IDX_1,

  4. } hi_i2c_idx;
复制代码
hi_u32 baudrateI2C通信波特率。
例如:RTC时钟模块与板子通过I2C0连接,通讯波特率为400K,故使用hi_i2c_init(HI_I2C_IDX_0, 400000);对其进行初始化。
l hi_u32 hi_i2c_set_baudrate(hi_i2c_idx id, hi_u32 baudrate);
此函数功能为配置相对应的I2C通讯波特率。
hi_i2c_idx id为I2C硬件设备选择,hi_u32 baudrate所需配置波特率。
例如:对RTC时钟模块配置I2C0为400K波特率,其函数实现为hi_i2c_set_baudrate (HI_I2C_IDX_0, 400000);

2.写数据。通过I2C传递设备地址和数据给从机。函数实现如下:


图4.3-1





此处电源监控传感器的调用如下:
图4.3-2




3.读数据。通过I2C的读函数读回时间数据。
l hi_u32 hi_i2c_read(hi_i2c_idx id, hi_u16 device_addr, const hi_i2c_data *i2c_data);

hi_i2c_idx idI2C硬件设备选择,取值范围为hi_i2c_idx枚举类型,如下:
  1. typedef enum {

  2.     HI_I2C_IDX_0,

  3.     HI_I2C_IDX_1,

  4. } hi_i2c_idx;

  5. hi_u16 device_addr:从机设备地址

  6. const hi_i2c_data *i2c_data:I2C发送/接收数据描述符,发送的数据类型如下:

  7. typedef struct {

  8.     hi_u8*  send_buf;        /*CNcomment:数据发送指针CNend */

  9.     hi_u32  send_len;        /* CNcomment:发送数据长度(单位:byte)CNend */

  10.     hi_u8*  receive_buf;     /**< Data RX pointer. CNcomment:数据接收指针CNend */

  11.     hi_u32  receive_len;     /*CNcomment:接收数据长度(单位:byte)CNend */

  12. } hi_i2c_data;
复制代码
例子中,RTC时钟模块读数据函数实现如下:
图4.3-3




4.最后将读取到的年、月、日、时、分、秒、星期显示在oled屏上。以秒举例,编码如下:
图4.3-4





评论

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章