• 大小: 1.22MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-12
  • 语言: 其他
  • 标签: 时钟芯片  

资源简介

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


评论

共有 条评论