ds1302

【连载】【FPGA黑金开发板】NIOSII那些事儿—UC/OS实验(二十四)

拜拜、爱过 提交于 2020-03-29 02:57:45
声明:本文为原创作品,版权归本博文作者所有,如需转载,请注明出处 http://www.cnblogs.com/kingst/ 这一章,我们简单研究一下基于NIOS II的uC/OS系统的开发过程。实验中有三个任务:第一个任务用于实时时钟DS1302驱动,第二个任务用于LED灯闪烁;第三个任务用于数码管显示654321;最终通过把数据通过PC机串口显示出来,有兴趣的可自行把开发板上的其它功能添上。 1 、 uC/OSII 简介 u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC

AD7739的SPI程序,DS1302的SPI程序,和24C02IIC程序字节读写总结

落爺英雄遲暮 提交于 2020-03-12 13:08:39
一、AD7739的SPI程序 空闲电平是高电平,所以字节读写程序最后时钟电平是高电平,必须是完整的时钟周期。 void Write7738(unsigned char ch) { unsigned char idata, n=8; // 向SDA上发送一位数据字节,共八位 //传输时钟频率117.260KHZ,T=8.528US和波形相符合2020.1.11 CS=0; //但是硬件的SPI计算频率140.625KHZ,实际波形234.625KHZ,T=4.26US不相符合2020.1.11 SCK = 1 ; //时钟置高 while(n--) { delay_us(3); //delay(3); SCK = 0 ; //时钟置低 if((ch&0x80) == 0x80) // 若要发送的数据最高位为1则发送位1 { MOSI = 1; // 传送位1 } else { MOSI = 0; // 否则传送位0 } delay_us(3); //delay(3); SCK = 1 ; //时钟置高 ch = ch<<1; // 数据左移一位 } CS=1; //在103行导致RDY引脚一直是高电平 } //----------------------------------------------------------------------------------------

DS1302时钟芯片驱动程序

人盡茶涼 提交于 2019-12-09 20:12:30
/***************************************************************************** FileName : DS1302.c Function : DS1302驱动 Author : mike Email : hxtiou@163.com Version : V1.0 Date : 2019-10-21 注意:DS1302写寄存器是地址是偶数,读的时候地址+1 比如:往0x80地址写入0x01,读取时需要从0x81读取 DS1302控制字: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 1 RAM/-CK A4 A3 A2 A1 A1 RD/-WR [7] :控制字的最高有效位(位7)必须是逻辑1,如果它为 0 则不能把数据写入DS1302; [6] :如果为0,则表示存取日历时钟数据,为1表示存取RAM数据; [5:1]:指示操作单元的地址; [0] :0表示要进行写操作,为1表示进行读操作; 控制字总是从最低位开始输出.在控制字指令输入后的下一个SCLK时钟的上升沿时数据 被写入DS1302,数据输入从最低位(0位)开始.同样,在紧跟8位的控制字指令后的下一个 SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位. 存取日历时钟(BCD码):其中9

DS1302时钟芯片时序

混江龙づ霸主 提交于 2019-12-02 05:07:32
CE 和 SSEL 的使能控制是反的,对于通信写数据, 都是在 SCK 的上升沿,从机进行采样,下降沿的时候,主机发送数据。 DS1302 的时序里, 单片机要预先写一个字节指令,指明要写入的寄存器的地址以及后续的操作是写操作,然后 再写入一个字节的数据。 读操作有两处需要特别注意的地方。第一, DS1302 的时序图上的箭头都是针对 DS1302 来说的,因此读操作的时候,先写第一个字节指令,上升沿的时候 DS1302 来锁存数据,下 降沿我们用单片机发送数据。到了第二个字数据,由于我们这个时序过程相当于 CPOL=0/CPHA=0,前沿发送数据,后沿读取数据,第二个字节是 DS1302 下降沿输出数据, 我们的单片机上升沿来读取,因此箭头从 DS1302 角度来说,出现在了下降沿。 第二个需要注意的地方就是,我们的单片机没有标准的 SPI 接口,和 I2C 一样需要用 IO 口来模拟通信过程。在读 DS1302 的时候,理论上 SPI 是上升沿读取,但是程序是用 IO 口模 拟的,所以数据的读取和时钟沿的变化不可能同时了,必然就有一个先后顺序。通过实验发 现,如果先读取 IO 线上的数据,再拉高 SCLK 产生上升沿,那么读到的数据一定是正确的, 而颠倒顺序后数据就有可能出错。这个问题产生的原因还是在于 DS1302 的通信协议与标准 SPI 协议存在的差异造成的,如果是标准

实时时钟芯片DS1302

我与影子孤独终老i 提交于 2019-11-27 08:06:29
BCD码 用0b0000-0b1001表示0-9 0b1001加1自动进位为0b00010000 特性 1、DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,并且还有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。 2、拥有31字节数据存储RAM。 3、串行I/O通信方式,相对并行来说比较节省IO口的使用。 4、DS1302的工作电压比较宽,在2.0~5.5V的范围内都可以正常工作。 5、DS1302这种时钟芯片功耗一般都很低,它在工作电压2.0V的时候,工作电流小于300nA。 6、DS1302共有8个引脚,有两种封装形式,一种是DIP-8封装,芯片宽度(不含引脚)是300mil,一种是SOP-8封装,有两种宽度,一种是150mil,一种是208mil。 7、当供电电压是5V的时候,兼容标准的TTL电平标准,这里的意思是,可以完美的和单片机进行通信。 8、由于DS1302是DS1202的升级版本,所以所有的功能都兼容DS1202。此外DS1302有两个电源输入,一个是主电源,另外一个是备用电源,比如可以用电池或者大电容,这样做是为了在系统掉电的情况下,我们的时钟还会继续走。 硬件信息 引脚功能 寄存器介绍 寄存器内部采用BCD码 指令讲解: DS1302 的一条指令一个字节共 8 位,其中第 7 位(即最高位)固定为 1