摘要: 前言DMA即直接内存存取。我理解它就是一个“交通部长”抑或是一个“搬运工”,协助CPU存储或读取数据。既然它的主要工作就是“搬运”数据,服务对象自然就是内存(不太严格的说法吧,STM32中Flash闪存也可成为DMA的服务对象)。问题1 DMA传输数量寄存器DMA_CNDTRx的含义描述在中文版本参考手册里,寄存器DMA_CNDTRx有如下解释:对于“指示待传输字节数目”的解释,我有些疑惑,因为在参考手册DMA主要特性中又是这么说的:可编程的数据传输数目:最大为65535.同样的,我在英文版本参考手册里也看到如下:所以寄存器DMA_CNDTRx的内容是代表哪个意义,待传输字节数目还是待传输单位 阅读全文
posted @ 2014-02-10 21:06 灰色的鱼 阅读(2327) 评论(0) 推荐(0) 编辑
摘要: NEC协议载波:38khz其逻辑1与逻辑0的表示如图所示:逻辑1为2.25ms,脉冲时间560us;逻辑0为1.12ms,脉冲时间560us。所以我们根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4。NEC协议格式:首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。 以上是一个正常的序列,但可能存在一种情况:你一直按着1个键,这样的话发送的是以110ms为周期的重复码,如下图:就是说,发了一次. 阅读全文
posted @ 2013-04-12 22:05 灰色的鱼 阅读(49653) 评论(3) 推荐(3) 编辑
摘要: 第一次用verilog上机建模,深刻体会到看书所掌握不到的体会。有时候看书无法细心观察到的东西,在敲实验代码的时候,或许能够体现出来。现将第一次的体会记录如下。还是先将verilog代码写下 1 /************************************************************************ 2 模块作者:灰色的鱼 3 编写时间:13:52 2013/2/13 4 模块功能:对串行输入的数据流进行检测。只要发现10010序列,就立即输出高电平。 5 **********************************************.. 阅读全文
posted @ 2013-02-13 22:20 灰色的鱼 阅读(14761) 评论(0) 推荐(1) 编辑
摘要: 今天,又花了差不多一天时间,从手册看起,到写完代码,最后仿真。期间出现了一个细小的差错,折腾了约1个钟头才解决掉(所以,最怕底层细小之处出现错误)。DS1302是达拉斯公司出品的一款实时时钟芯片。具体且详细的资料介绍在其芯片手册上面都有写着。说起来自己读DS1302芯片手册,也花了不少精力,主要是对一个问题一直没理解。下图是DS1302时钟寄存器的结构。(注意左边READ与WRITE两列) 下图是DS1302的命令字节(就是跟它通信的格式) 其中A4到A0可以代表寄存器的地址。我想,5bit表示的地址,翻遍了手册,在上面也没有说明5bit的地址是怎么表示的(手册上只有... 阅读全文
posted @ 2013-02-02 15:14 灰色的鱼 阅读(7697) 评论(0) 推荐(0) 编辑
摘要: 在单片机与器件的有线通信中,并行最简单了,比方说1602液晶屏。但是代价就是连线多,占用单片机较多的IO口。一般的话,都是使用串行通信方式,其中有UART、SPI、IIC,还有一个我一直以来都比较头疼的达拉斯公司(现被美信收购)的单总线。单总线,故名思意,就是用1条连线进行通信,比起两条线的IIC(时钟线、数据线),单总线在操作上比较困难,对于时序要求比较高。没有了时钟线的帮助,它依靠电平持续时间判断信号,操作难度可想而知。 在这之前,个人曾经购买过两个价格不菲(主要是价格贵,传感器又是小得不起眼)的DS18B20。这两块都在我手上经过了相同的经历:起初用用还行,勉强能够用单片机驱动,可以.. 阅读全文
posted @ 2013-02-01 15:44 灰色的鱼 阅读(4885) 评论(0) 推荐(0) 编辑
摘要: 从今天早上开始看AT24C02的手册,凭着有些撮的英语水平,24页的资料,愣是啃了半天,上午的时光就过去了。 AT24C02是一款EEPROM芯片,IIC接口,就是两条线:SDA与SCL;不过对于单单操纵这款芯片而言,没有设计到IIC总线协议之中所谓的仲裁。因而,大体看下了芯片手册,心中就知道大概怎么操作了。 另外,24C02的2K是指2Kbit。一般的话,存储器都用字节来衡量,所以其实24c02只有256byte。是不是比较小?这256byte又分成了32pages,每页有8byte。 现在来看看该如何编写代码,首先得知道起始与停止条件 所谓起始条件:在SCL高... 阅读全文
posted @ 2013-01-31 18:47 灰色的鱼 阅读(13217) 评论(1) 推荐(1) 编辑
摘要: 一、存储器结构 51单片机存储器采用的是哈佛结构,即是程序存储器空间和数据存储器空间分开,程序存储器和数据存储器各自有自己的寻址方式、寻址空间和控制系统。51存储器可以分为程序存储器ROM:用于存放程序和表格之类的固定常识。C51编程中用code关键词声明。内部数据存储器RAM:51子系列有128字节RAM,52子系列有256字节RAM特殊功能寄存器SFR:80H-FFH字节地址的RAM位地址空间:片内RAM0x20-0x2f空间,本空间允许按位或者字节寻址。可用bdata进行声明。外部数据寄存器RAM:片外的RAM,最大寻址空间2^16即是64K大RAM。Pdata用于声明片外第一页R... 阅读全文
posted @ 2013-01-30 17:20 灰色的鱼 阅读(1138) 评论(0) 推荐(0) 编辑
摘要: SmartRF04EB制作介绍BY灰色的鱼 前前后后花费大约两个星期.从一点点都不懂,到制作出来实物,乃至通过最后的调试。期间经历了颇多曲折,感悟良多,所以写下此文,愿与各位分享。希望这篇文章能够为大家提供指导,避免走弯路。(一)原理图 原理图来源于网络,当然你也可以去查找。此原理图是根据Ti官方电路修改而来。支持内核为51的TI Zigbee芯片:CC111x/CC243x/CC253x/CC251x。我特意将C8051F320芯片主板与底板分开。一来方便布局,二来可以减少制作失败的损失。(二)PCB图线宽比较粗,最细的也有0.5mm,方便手工制作PCB。(三)制作实物看着还行吧!!!(四) 阅读全文
posted @ 2012-10-27 09:44 灰色的鱼 阅读(6328) 评论(1) 推荐(1) 编辑