电子产业一站式赋能平台

PCB联盟网

搜索
查看: 555|回复: 0
收起左侧

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

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-11-27 17:56:23 | 显示全部楼层 |阅读模式
WIFI-IoT开发板RTC时钟模块功能实现,   
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 id
I2C硬件设备选择,取值范围为hi_i2c_idx枚举类型,如下:



  • typedef enum {
      

  •   
  •     HI_I2C_IDX_0,
      

  •   
  •     HI_I2C_IDX_1,
      

  •   
  • } hi_i2c_idx;

复制代码
hi_u32 baudrate
I2C通信波特率。


例如: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 id
I2C硬件设备选择,取值范围为hi_i2c_idx枚举类型,如下:



  • typedef enum {
      

  •   
  •     HI_I2C_IDX_0,
      

  •   
  •     HI_I2C_IDX_1,
      

  •   
  • } hi_i2c_idx;
      

  •   
  • hi_u16 device_addr:从机设备地址
      

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

  •   
  • typedef struct {
      

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

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

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

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

  •   
  • } hi_i2c_data;

复制代码 例子中,RTC时钟模块读数据函数实现如下:

图4.3-3









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

图4.3-4
回复

使用道具 举报

发表回复

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

本版积分规则

关闭

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


联系客服 关注微信 下载APP 返回顶部 返回列表