社区导航

 

搜索
查看: 362|回复: 1

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

[复制链接]

93

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-12-23 23:55:40 | 显示全部楼层 |阅读模式
本帖最后由 donatello1996 于 2018-12-24 00:05 编辑

     本帖使用一个非常简单的方法用树莓派与I2C器件通信,这个器件选为I2C接口的DS3231,直接把DS3231接到I2C-1接口中即可:
57.jpg IMG_20181223_235650R.jpg
     首先要启用树莓派的I2C外设接口,在桌面设置或者BOOT配置文件下都可以:
56.jpg
然后是使用命令行工具i2cdetect检测I2C接口和I2C从机的存在:
i2cdetect -y 1
i2cdump -y 1 0x68
58.jpg 59.jpg
可以看到,DS3231前七个寄存器数据就是时间数据,从0x01~0x07依次为秒 分 时 星期 日 月 年。


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


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

看看效果:
60.jpg


回复

使用道具 举报

5470

TA的帖子

190

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-12-24 10:54:57 | 显示全部楼层
不错小伙子,写的很好,加油!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-1-16 17:46 , Processed in 0.101409 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表