显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

III = Information,Inspiration,Innovation

 
 
 
 

日历

 
 
模块内容加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 

湖北省 武汉市 天秤座

 发消息  写留言

 
we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.
 
近期心愿make it happen, make it happy, make it harmony
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
 

【转载】SPI总线协议及SPI时序图详解

2017-9-20 11:43:12 阅读1 评论0 202017/09 Sept20

有一篇关于SPI总线介绍的文章,写的非常不错,转载如下。

================================================

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

上升沿发送、下降沿接收、高位先发送。

上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。

下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010),从机的sbuff=0x55 (01010101),下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。

---------------------------------------------------

脉冲      主机sbuff 从机sbuff sdi sdo

---------------------------------------------------

作者  | 2017-9-20 11:43:12 | 阅读(1) |评论(0) | 阅读全文>>

3144霍尔传感器

2017-9-9 15:55:20 阅读10 评论0 92017/09 Sept9

把有字的一面朝向自己,左边的是VCC,中间的是GND,右边的是OUT。

工作方式:当没有检测到磁信号时,OUT输出高电平, 而当有磁信号的时候,OUT输出低电平。

注意:该传感器对磁场的极性有要求,检测磁场时,建议两个正反传感器对置。

不过感觉不是太灵敏,用钕铁硼磁铁都要很近的距离(约5mm)才能有响应

作者  | 2017-9-9 15:55:20 | 阅读(10) |评论(0) | 阅读全文>>

25XX08驱动程序

2017-8-28 17:05:31 阅读19 评论0 282017/08 Aug28

之前一直在研究IIC总线,支持这一总线的的EEPROM——AT24CXX十分常见,也写过了不少代码并且仿真和开发板上都测试OK了,最近想学习一下SPI总线的基础知识,恰好Proteus下有25XX08这种EEPROM,支持SPI总线,但网上并不能找到详细说明的资料,干脆自己查阅DataSheet,根据时序和说明,慢慢鼓捣出来的。

概述

25XX08A/B(XX通常是AA或者LC)是采用SPI总线的EEPROM,容量达到8Kbit(1024Byte=1KB),AA型正常工作范围是-40℃到85℃,而LC型号则达到了-40℃到125℃。A型和B型则是页面大小不同,A型为16字节每页,而B型为32字节每页。例如25AA08B表示工作温度范围在-40℃到85℃,单页为16字节的EEPROM。

引脚说明

SI/SO,数据的输入和输出端口,这是从工作器件的角度来看的。

CS:片选端口,如果需要25XX08X工作,则应该使其为低电平。

WP:写保护,WP=0时,不接受数据输入。

HOLD:HOLD=0将暂停数据传输。

因此,如果想要正确读写数据,则CS一定要保持低电平,而HOLD必须为高电平,并且在写入数据的时候,使WP为高电平关闭写保护。

驱动程序

25AA08.h头文件:

#include <reg51.h> #include <intrins.h> //Pre-defined Instruction Set #define

作者  | 2017-8-28 17:05:31 | 阅读(19) |评论(0) | 阅读全文>>

74HC595

2017-8-25 17:31:08 阅读20 评论0 252017/08 Aug25

74HC595是一个具有8位移位寄存器和一个存储器,具有三态输出功能,移位寄存器和存储器有相互独立的时钟,串行数据支持级联功能,即上一个74HC595的输出可以作为下一个74HC595的输入。

关于各针脚的功能就不再赘述了,直接上仿真原理图:

代码:

#include <reg51.h> #include <intrins.h> sbit SER=P3^4;//串行数据输入端 sbit RCLK=P3^5;//输出存储器锁存时钟线,STCP sbit SRCLK=P3^6;//数据输入时钟线,SHCP //共阳极数码管0-F code unsigned char SEGCA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void delay(unsigned int z) { unsigned char y; while(z--) { y=120; while(y--); } } void SendByte_74HC595(unsigned char dat) { unsigned char i; RCLK=0; for(i=0;i<8;i++) { SER=(dat>>(7-i)) & 0x01; //数据输入时钟线上升沿时

作者  | 2017-8-25 17:31:08 | 阅读(20) |评论(0) | 阅读全文>>

DHT11温湿度传感器程序

2017-8-23 9:26:21 阅读23 评论0 232017/08 Aug23

这是一款含有已校准数字信号输出的温湿度复合传感器,这款传感器和传统的传感器不同,一般的传感器使用高低电平表示0和1,而这个传感器是采用高电平持续的时间长度表示0和1,属于是PPM(脉冲位置调制)。理解其工作原理之后就很容易写出相应的程序,废话少说,直接上代码。

DHT11.h头文件:

#include <reg51.h> /* DHT11读取的五个字节: DATA[0]:湿度整数部分 DATA[1]:湿度小数部分,目前一直为0 DATA[2]:温度整数部分 DATA[3]:温度小数部分,目前一直为0 DATA[4]:检验和,等于前四个字节的和(溢出截断) */ sbit DHT11=P2^7; void Delay30us_DHT11(); void Delay20ms_DHT11(); void Delay1s_DHT11(); // #define NOACK 0xFF #define OVERTIME 0xFE unsigned char ReadData_DHT11(unsigned char *buffer); unsigned char Validate_DHT11(unsigned char* buffer);然后是DHT11.c文件: #include "DHT11.h" /* 在晶振频率为12MHz时,延时30微秒 */ void Delay30us_DHT11() { //LCALL //2MC #pragma ASM PUSH ACC //2MC

作者  | 2017-8-23 9:26:21 | 阅读(23) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017

注册 登录  
 加关注