有没有人用过sd3088时钟芯片这个芯片

时钟芯片SD3088 使用说明及汇编程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
时钟芯片SD3088 使用说明及汇编程序
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 726|回复: 9
有没有人用过SD3088这个芯片,
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
我看了半天编出来的程序感觉不对啊!写进去的值也不对,我想问这个芯片是自己会走时间的对吧》?那怎样才能让他走时?是供电了就走时还是要写什么数据进去?
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
#include &i2c.h&
#include &delay.h&
#include &stm32f2xx.h&
#include &sys.h&
//////////////////////////////////////////////////////////////////////////////////& & & &&&
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//Mini STM32开发板
//IIC 驱动函数& & & && &
//正点原子@ALIENTEK
//技术论坛:
//修改日期:
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 正点原子
//All rights reserved
////////////////////////////////////////////////////////////////////////////////// & & & && &
//初始化IIC
void IIC_Init(void)
{& & & & & & & & & & & & & & & & & & & && && &
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & //RCC-&APB2ENR|=1&&4;//先使能外设IO PORTC时钟
& & & && & RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);&&//A时钟使能
& & & && &&&RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);&&//C时钟使能
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
& & & & //GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF;&&
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;& & & & //推挽输出
& & & & & & & & GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
& & & & & & & && &&&GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
& & & & & & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
& & & & //GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;&&//推挽输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & & & & & && &&&GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
& & & & GPIO_Init(GPIOC, &GPIO_InitStructure);
&&//GPIO_SetBits(GPIOA,GPIO_Pin_8);
& & & & //GPIO_SetBits(GPIOC,GPIO_Pin_9);
& & & & //GPIO_ResetBits(GPIOA,GPIO_Pin_8);
& & & & IIC_SCL1;
& & & & IIC_SDA1;
//产生IIC起始信号
void IIC_Start(void)
& & & & //SDA_OUT();& &&&//sda线输出
& & & & GPIO_SetBits(GPIOC,GPIO_Pin_9);//IIC_SDA=1;& & & && && & & && &
& & & & GPIO_SetBits(GPIOA,GPIO_Pin_8);//IIC_SCL=1;
delay_mms(2);
& & & & GPIO_ResetBits(GPIOC,GPIO_Pin_9);//IIC_SDA=0;//START:when CLK is high,DATA change form high to low
& & & & delay_mms(2);
& & & & GPIO_ResetBits(GPIOA,GPIO_Pin_8);//IIC_SCL=0;//钳住I2C总线,准备发送或接收数据
}& & & && &
//产生IIC停止信号
void IIC_Stop(void)
& & & & //SDA_OUT();//sda线输出
& & & & GPIO_ResetBits(GPIOA,GPIO_Pin_8);//IIC_SCL=0;
& & & & & & & & GPIO_ResetBits(GPIOC,GPIO_Pin_9);//IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
& & & & delay_mms(2);
& & & & & & & & GPIO_SetBits(GPIOA,GPIO_Pin_8);//IIC_SCL=1;
& & & & & & & & GPIO_ResetBits(GPIOC,GPIO_Pin_9);//IIC_SDA=1;//发送I2C总线结束信号
delay_mms(2);& & & & & & & & & & & & & & & & & & & & & & & && & & & & &
//等待应答信号到来
//返回值:1,接收应答失败
//& && &&&0,接收应答成功
u8 IIC_Wait_Ack(void)
& & & & u8 ucErrTime=0;
& & & & //SDA_IN();& && &//SDA设置为输入&&
& & & & IIC_SDA1;delay_mms(2);& & & && &
& & & & IIC_SCL1;delay_mms(2);& & & &&&
& & & & while(READ_SDA)
& & & & & & & & ucErrTime++;
& & & & & & & & if(ucErrTime&250)
& & & & & & & & {
& & & & & & & & & & & & IIC_Stop();
& & & & & & & & & & & & return 0;
& & & & & & & & }
& & & & IIC_SCL0;//时钟输出0 & & & && &
& & & & return 1;&&
//产生ACK应答
void IIC_Ack(void)
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
& & & & //SDA_OUT();
GPIO_ResetBits(GPIOC,GPIO_Pin_9);
delay_mms(2);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
//delay_mms(2);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
//不产生ACK应答& & & & & & & && &&&
void IIC_NAck(void)
& & & & & & & & GPIO_ResetBits(GPIOA,GPIO_Pin_8);
& & & & //SDA_OUT();
& & & & GPIO_SetBits(GPIOC,GPIO_Pin_9);
& & & & delay_mms(2);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
& & & & delay_mms(2);
GPIO_ResetBits(GPIOC,GPIO_Pin_9);
}& & & & & & & & & & & & & & & & & & & &&&& & & & & & & & & & & & & & & && && &
//IIC发送一个字节
//返回从机有无应答
//1,有应答
//0,无应答& & & & & & & & & & & && &
void IIC_Send_Byte(u8 txd)
{& && && && && && && && &
&&//SDA_OUT(); & & & && &&&
& & IIC_SCL0;//拉低时钟开始数据传输
& & for(t=0;t&8;t++)
& & {& && && && &&&
& && &&&//IIC_SDA((txd&0x80)&&7);
& & & & & & & & & & & & switch ((txd&0x80)&&7)
& & & & & & & & & & & & & & & & {& & & & case 0: IIC_SDA0;&&
& & & & & & & & & & & & & & & && &case 1:& &IIC_SDA1;& &
& && && && && &}& & & &
& && &&&txd&&=1; & & & && &
& & & & & & & & delay_mms(2);& &//对TEA5767这三个延时都是必须的
& & & & & & & & IIC_SCL1;
& & & & & & & & & & & & delay_mms(2);
& & & & & & & & IIC_SCL0;& & & &
& & & & delay_mms(2);
& & }& & & &&&
//读1个字节,ack=1时,发送ACK,ack=0,发送nACK& &
u8 IIC_Read_Byte(void)
& & & & unsigned char i,receive=0;
& & & & //SDA_IN();//SDA设置为输入
& & for(i=0;i&8;i++ )
& && &&&IIC_SCL0;
& && && & & & delay_mms(2);
& & & & & & & & IIC_SCL1;
& && &&&receive&&=1;
& && &&&if(READ_SDA)receive++;& &
& & & & delay_mms(2);
& & }& & & & & & & & & & & & & & & & & & & &&&
& &IIC_SCL0;
u8 I2CReceiveByte(void)& && &//数据从高位到低位//
& & & & int i=8;
& & & & u8 ddata=0;
& & & & SDA_IN()& & & & ;& & & & & & & & //设置SDA为输入(其它类型的单片机需要配置IO输入输出寄存器)
& & & & while(i--)
& & & & & & & & ddata&&=1;& && &//数据从高位开始读取
& & & & & & & & IIC_SCL0;
& & & & & & & & delay_mms(20);
& & & & & & & & IIC_SCL1;
& & & & & & & & delay_mms(20);& & & & //从高位开始 ddata|=SDA;ddata&&=1
& & & & & & & & if(READ_SDA)
& & & & & & & & {
& & & & & & & & & & & & ddata|=0x01;
& & & & & & & & }
& & & & IIC_SCL0;
u8 I2CWriteOneByte(unsigned char DeviceAddress,unsigned char add, unsigned char date)
{& & & & & & & &
& & & & //if(!IIC_Start())return 0;
& & & & IIC_Start();&&
& & & & IIC_Send_Byte(DeviceAddress);& && &
& & & & IIC_Wait_Ack();& &
& & & & IIC_Send_Byte(add);& & & & & & & & //设置写地址& && &
& & & & IIC_Wait_Ack();& & & &
& & & & IIC_Send_Byte(date);& & & & & & & & //写数据
& & & & IIC_Wait_Ack();& & & &
& & & & IIC_Stop();
& & & & return& & & & 1;
u8 WriteTimeOn(void)
{& & & & & & & &
& & & & if(!I2CWriteOneByte(0x64,0x10,0x80))return 0;
& & & & I2CWriteOneByte(0x64,0x0f,0xff);
& & & & return& & & & 1;
/******写SD30XX禁止程序******/
u8 WriteTimeOff(void)
{& & & & & & & &
& & & & if(!I2CWriteOneByte(0x64,0x0f,0x7b))return 0;
& & & & I2CWriteOneByte(0x64,0x10,0);
& & & & return& & & & 1;
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
*SD3088时钟芯片 读写
*文件 sd3088.h
*版本 v1.0
#include &sd3088.h&&&
&&#include &stm32f2xx.h&
//extern I2C_HandleTypeDef hi2c1;&&
&&#define& & & & & & & & true&&& & & & & & & & & & & & 1
#define & & & & false & & & & & & & & & & & & 0
Time Time_sd3088 = {0x55, 0x59, 0x14, 0x01, 0x12, 0x11, 0x14};&&//初始化时间结构体变量(设置时间:日 14:59:55&&星期一)&&
//Time1 Time_sd3088& &
uint8_t&&rtc_data[8];& && & //通用数据缓存器&&
uint8_t sram[8];& && &&&//通用数据缓存器&&
u8 read_rtc(void)&&
&&// 读取时间&&
& & & &&&& & & && && && &IIC_Start();&&
& &&&IIC_Send_Byte(0x65);
& & & && &//& & & & if (!IIC_Wait_Ack()) {IIC_Stop();return 0;}
& & & & & & & & & & & & IIC_Wait_Ack();
& & & & & & & & & & & & Time_sd3088.second =IIC_Read_Byte();
& & & && && && && && & IIC_Ack();
& & & && && & //IIC_SDA0 ;
& &&&Time_sd3088.minute = IIC_Read_Byte();
IIC_Ack();& & & &
& && &Time_sd3088.hour = IIC_Read_Byte();
IIC_Ack();&&
& && &Time_sd3088.week =IIC_Read_Byte();
IIC_Ack();&&
& && &Time_sd3088.day = IIC_Read_Byte();
& & & & IIC_Ack();
& && &Time_sd3088.month =IIC_Read_Byte();
& & & & IIC_Ack();
& && &Time_sd3088.year =IIC_Read_Byte();
& &IIC_Ack();& & & &
& & & && &&&Time_sd3088.quantity = IIC_Read_Byte();
& &&&IIC_NAck();& & & &
& & & & & & & & & & & && & // IIC_NAck();& & & & & & & & //读时间完成,发送NoAck
& & & && && &&&IIC_Stop();
& && & return 1;
u8 send_rtc(void)
& & & & //写时间操作求一次对实时时间寄存器(00H~06H)依次写入,
& && && && && && && && && && &//不可以单独对7个时间数据中的某一位进行写操作,否则可能会引起时间数据的错误进位.
& && && && &IIC_Start();&&
& & & & //WriteTimeOn();& & & &
& &&&IIC_Send_Byte(0x64);& & & & //要修改其中某一个数据 , 应一次性写入全部 7 个实时时钟数据.
& && & & & IIC_Wait_Ack();
&&IIC_Send_Byte(0x00);
& &&&& & & & IIC_Wait_Ack();
& & & & //& & & & if(IIC_Wait_Ack()){IIC_Stop(); return 0;}
& & & & IIC_Send_Byte(Time_sd3088.second);
& &&&& & & & IIC_Wait_Ack();//IIC_Ack();
& & & & IIC_Send_Byte(Time_sd3088.minute);
& & & & IIC_Wait_Ack();
& & & & IIC_Send_Byte(Time_sd3088.hour);
& & & & IIC_Wait_Ack();
& & & & IIC_Send_Byte(Time_sd3088.week);
& & & & IIC_Wait_Ack();
& & & & IIC_Send_Byte(Time_sd3088.day);
& & & & & & & & IIC_Wait_Ack();
& & & & IIC_Send_Byte(Time_sd3088.month);
& & & & IIC_Wait_Ack();
& & & & IIC_Send_Byte(Time_sd3088.year);
& & & & IIC_Wait_Ack();
& & & && &IIC_Stop();
& & & & & & & & //WriteTimeOff();& & & &
& & & & & & & & return& & & & 1;
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
只读出秒,不知道哪里错了&&帮忙看看,我看了一天了,都没找到问题
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
主题帖子精华
金牌会员, 积分 1187, 距离下一级还需 1813 积分
在线时间261 小时
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
.cn/download/sd3088/sd3088.asp#logid=0511857
我也找到这个了&&就是参照那个写 的&&。现在只能读出秒 不知道为什么
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间49 小时
智能读出秒是为什么
主题帖子精华
新手上路, 积分 8, 距离下一级还需 42 积分
在线时间0 小时
你的好了吗?大神
Powered by三岛SD3088集成电路粘接解决方案
近日一位客户在粘结FPC线路板与IC集成电路时遇到了不小的麻烦,于是来三岛寻求解决方案,我们三岛胶粘剂工程师推荐选择一款环保的稠状胶水SD3088,这款胶水是一款环氧树脂底部填充胶。
FPC线路板与IC集成电路的粘接
由于IC集成电路体积偏小,往往体积偏小的物件在粘接的过程中不仅容易溢胶还不易受控制,需将比指甲还小的IC集成电路完好的粘接、加固并且填充在线路板的某一固定区域,选择胶水至关重要。在使用稠状的底部填充胶时,若工作人员在粘接过程中稍不注意会导致IC集成电路周围残留部分胶水和填充不恰当等问题,这会直接影响到线路板的美观以及障碍内部空间。于是我们专业的技术操作人员迅速作出解决方案,可放置在温度40度左右的烤箱中烤至20分钟,使稠状的SD3088胶水逐渐变稀状。变稀状后的SD3088更适合用于粘接类似IC集成电路这种体积偏小的物件,少量便可均匀涂覆,可以达到没有拉丝、溢胶、塌陷的效果,亦不会降低SD3088胶水的粘度特性和吸附性。
三岛底部填充胶SD3088
经过温度处理后的SD3088底部填充胶即刻使用于粘IC集成电路与线路板,迅速固化,使集成电路与线路板完美契合。亦充分说明了底部填充胶多元化的使用方法,这正是我们所追求的产品服务宗旨。
惠州市三岛新材料有限公司总部工厂位于历史文化名城惠州,公司从事胶粘剂制程方案研发推广和胶粘剂制程产品系统供应服务。如需了解更多产品信息,欢迎拨打三岛服务热线:400-066-0768或者登陆三岛有机硅胶/咨询我们。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
三岛导热硅胶SD916R,高导热,性能稳定,价格低廉
三岛导热硅胶SD923,高导热,性能稳定,价格低廉
今日搜狐热点

我要回帖

更多关于 sd3088时钟芯片 的文章

 

随机推荐