DS1339驱动
DS1339时钟芯片源码驱动,经编写测试,已完成,可移植到任何单片机上。
MCU用的是STM32F205,注意操作步骤
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10058 2015-10-22 10:39 ds1339ds1339.c
文件 4318 2015-10-20 17:50 ds1339ds1339.h
文件 1521690 2015-10-14 16:19 ds1339DS1339B_cn.pdf
文件 712819 2015-10-14 16:19 ds1339DS1339_datasheet.pdf
文件 144384 2015-10-14 16:19 ds1339DS1339硬件.doc
文件 67072 2015-10-14 16:19 ds1339为什么晶振的频率是32.768kHz.doc
目录 0 2015-10-22 10:44 ds1339
----------- --------- ---------- ----- ----
2460341 7
#include “common.h“
#include “stdio.h“
#include “string.h“
#include “ds1339.h“
#include “usart.h“
#include “syswork.h“
void DS_IO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE ENABLE);
GPIO_InitStructure.GPIO_Pin = DS_SCL_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(DS_IIC_IO &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = DS_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(DS_IIC_IO &GPIO_InitStructure);
DS_SCL_L; //释放时钟线
DS_SDA_H; //释放数据线
}
void DS_IIC_Start(void)
{
DS_SDA_H;
DS_SCL_H;
DelayUS(5);
DS_SDA_L;
DelayUS(5);
DS_SCL_L;
}
void DS_IIC_Stop(void)
{
DS_SCL_L;
DS_SDA_L;
DelayUS(5);
DS_SCL_H;
DelayUS(5);
DS_SDA_H;
DelayUS(5);
}
bool_t DS_IIC_Wait_Ack(void)
{
uint16_t u16ErrTime = 0xFFF;
DS_SDA_H;
DS_SCL_H;
while((DS_SDA_STATU) && (u16ErrTime > 0))
{
u16ErrTime --;
}
DS_SCL_L;
DelayUS(5);
return ((u16ErrTime == 0) ? FALSE : TRUE);
}
void DS_IIC_Send_Ack(void)
{
DS_SDA_L;
DelayUS(5);
DS_SCL_H;
DelayUS(5);
DS_SCL_L;
DelayUS(5);
}
void DS_IIC_Send_NoAck(void)
{
DS_SDA_H;
DelayUS(5);
DS_SCL_H;
DelayUS(5);
DS_SCL_L;
DelayUS(5);
}
void DS_IIC_Write8Bit(uint8_t data)
{
uint8_t i = 0;
for(i = 0; i < 8; i++)
{
DS_SCL_L;
if(data & 0x80) { DS_SDA_H; }
else { DS_SDA_L; }
DelayUS(5);
DS_SCL_H;
DelayUS(5);
data <<= 1;
}
DS_SCL_L;
DelayUS(5);
}
uint8_t DS_IIC_Read8Bit(void)
{
uint8_t data = 0;
uint8_t i = 0;
DS_SDA_H; //释放数据线
for(i = 0; i < 8; i++)
{
data <<= 1;
DS_SCL_L;
DelayUS(5);
DS_SCL_H;
DelayUS(5);
if(DS_SDA_STATU)
{
data |= 0x01;
}
}
DS_SCL_L;
DelayUS(5);
return data;
}
bool_t DS_WriteByte(uint8_t addr uint8_t data)
{
bool_t ret = FALSE;
if(addr < REG_NUM)
{
DS_IIC_Start();
DS_IIC_Write8Bit(DS_WRITE_CMD);
DS_IIC_Wait_Ack();
DS_IIC_Write8Bit(addr);
DS_IIC_Wait_Ack();
DS_IIC_Write8Bit(data);
DS_IIC_Wait_Ack();
DS_IIC_Stop();
DelayUS(10);
ret = TRUE;
}
return ret;
}
uint8_t DS_ReadByte(uint8_t addr)
{
uint8_t data = 0;
if(addr < REG_NUM)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10058 2015-10-22 10:39 ds1339ds1339.c
文件 4318 2015-10-20 17:50 ds1339ds1339.h
文件 1521690 2015-10-14 16:19 ds1339DS1339B_cn.pdf
文件 712819 2015-10-14 16:19 ds1339DS1339_datasheet.pdf
文件 144384 2015-10-14 16:19 ds1339DS1339硬件.doc
文件 67072 2015-10-14 16:19 ds1339为什么晶振的频率是32.768kHz.doc
目录 0 2015-10-22 10:44 ds1339
----------- --------- ---------- ----- ----
2460341 7
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)