资源简介
DS1339时钟芯片源码驱动,经编写测试,已完成,可移植到任何单片机上。
MCU用的是STM32F205,注意操作步骤
代码片段和文件信息
#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 ds1339\ds1339.c
文件 4318 2015-10-20 17:50 ds1339\ds1339.h
文件 1521690 2015-10-14 16:19 ds1339\DS1339B_cn.pdf
文件 712819 2015-10-14 16:19 ds1339\DS1339_datasheet.pdf
文件 144384 2015-10-14 16:19 ds1339\DS1339硬件.doc
文件 67072 2015-10-14 16:19 ds1339\为什么晶振的频率是32.768kHz.doc
目录 0 2015-10-22 10:44 ds1339
----------- --------- ---------- ----- ----
2460341 7
相关资源
- 基于51开发板的温度报警闹钟按键控制
- 基于51单片机、PCF8563时钟芯片的智能
- 0011、采用实时时钟芯片DS1302+AT89C205
- 基于AT89C52单片机的万年历protel原理图
- stm8s003与ds1307时钟芯片程序
- 电子万年历毕业设计基于AT89C51单片机
- 时钟芯片ds1338应用 word文件
- STM32的DS3231时钟芯片驱动串口测试程序
- TI的msp430f5529读取DS1302时钟芯片,可以
- 0011、采用实时时钟芯片DS1302+AT89C205
- 基于单片机的智能路灯控制系统.doc
- STM32F103系列RX8025时钟芯片驱动程序
- DS1302实时时钟芯片的51汇编语言源程序
- DS1302时钟芯片做的LCD1602显示时钟51单
评论
共有 条评论