26885|1

156

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【树莓派3B+测评】打开I2C外设接口&驱动DS3231 [复制链接]

本帖最后由 donatello1996 于 2018-12-24 00:05 编辑

     本帖使用一个非常简单的方法用树莓派与I2C器件通信,这个器件选为I2C接口的DS3231,直接把DS3231接到I2C-1接口中即可:

     首先要启用树莓派的I2C外设接口,在桌面设置或者BOOT配置文件下都可以:

然后是使用命令行工具i2cdetect检测I2C接口和I2C从机的存在:
i2cdetect -y 1
i2cdump -y 1 0x68

可以看到,DS3231前七个寄存器数据就是时间数据,从0x01~0x07依次为秒 分 时 星期 日 月 年。


    然后加载wiringPi库,从程序中读取时间并显示:
#ifndef _DS3231_H_
#define _DS3231_H_
#include


unsigned char BCD_to_BYTE(unsigned char val)
//BCD转换为Byte
{
    return((val>>4)*10)+(val&0x0f);
}


unsigned char BYTE_to_BCD(unsigned char val)
//Byte码转换为BCD码
{
     return(((val%100)/10)<<4)|(val%10);
}


unsigned char fd_i2c_ds3231,hour,min,sec,day,year,month,date;


void DS3231_Init(int flag,unsigned char year,unsigned char month,unsigned char date,
                 unsigned char day,unsigned char hour,unsigned char min,unsigned char sec)
{
    fd_i2c_ds3231=wiringPiI2CSetup(0x68);
    if(flag)
    {
        wiringPiI2CWriteReg8(fd_i2c_ds3231,6,BYTE_to_BCD(year));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,5,BYTE_to_BCD(month));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,4,BYTE_to_BCD(date));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,3,BYTE_to_BCD(day));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,2,BYTE_to_BCD(hour));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,1,BYTE_to_BCD(min));
        wiringPiI2CWriteReg8(fd_i2c_ds3231,0,BYTE_to_BCD(sec));
    }


}


void DS3231_Read()
{
    sec=wiringPiI2CReadReg8(fd_i2c_ds3231,0);
    sec=BCD_to_BYTE(sec);


    min=wiringPiI2CReadReg8(fd_i2c_ds3231,1);
    min=BCD_to_BYTE(min);


    hour=wiringPiI2CReadReg8(fd_i2c_ds3231,2);
    hour=BCD_to_BYTE(hour);


    day=wiringPiI2CReadReg8(fd_i2c_ds3231,3);


    date=wiringPiI2CReadReg8(fd_i2c_ds3231,4);
    date=BCD_to_BYTE(date);


    month=wiringPiI2CReadReg8(fd_i2c_ds3231,5);
    month=BCD_to_BYTE(month);


    year=wiringPiI2CReadReg8(fd_i2c_ds3231,6);
    year=BCD_to_BYTE(year);
}


#endif

看看效果:

最新回复

不错小伙子,写的很好,加油!  详情 回复 发表于 2018-12-24 10:54
点赞 关注(1)

回复
举报

6040

帖子

202

TA的资源

版主

沙发
 
不错小伙子,写的很好,加油!
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表