Tag Archives: Electronics

串行Flash芯片w25x16使用心得

这一段时间因项目需要使用了Winbond公司的w25x16/w25x32串行Flash存储芯片,对Flash芯片的使用方法略有心得,现整理成文。

在Flash中存储数据与在EEPROM中存储数据不同,不仅需要考虑数据的存储结构,还需要针对Flash独有的特性进行特殊处理。其中最显著的不同点在于Flash在编程前,必须保证待写入区域全部为空(0xFF),否则无法正常执行写入操作;并且Flash在操作时一般需要按数据区域(Section)进行操作,而并非字节。

串行Flash的主要特性有(以w25x16为例):
1、写入前必须保证待写区域为空(全部为0xFF);
2、一次批量编程最多只能写入Page(256B)的大小,如果中途发生换页,需要更改地址后重新发送写入命令;
3、一次擦除至少擦除一个Section(4KB);
4、16个页(Page)构成一个数据区域(Section),16个数据区域(Section)构成一个数据块(Block);
5、擦除时间较长,约为300ms/Sector;
6、编程时间为150+12*n us (折合3ms / page);
7、大容量Flash存在坏区的可能。

对以上问题进行分析,我们可以得到以下一些结论:
1、必须对当前可用的数据块进行检查与标记,从而在编程前保证数据区域的写有效性;
2、单次最多只能写入256字节,当写入的数据发生了换页,需要进行页面切换;如果写入的数据大于256字节,必须进行拆分;
3、若想修改单个数据,必须将整个数据进行读-修改-擦除-写入操作,必须保留与Section同样大小(4K)的临时存放空间。又因为擦除和编程都是比较费时的,可以看到,这个操作代价很高,所以应该尽量避免频繁的修改;
4、擦除时间长还会提高在擦除后、写入前发生断电导致数据全部丢失的风险,需要有一定的安全机制;
5、批量写入的效率更高,可以有一定的写缓冲机制以提高性能;
6、需要对Flash进行校验与坏块标记。

可以看到,Flash的这些特性很像硬盘。在操作系统下,可以使用近乎相同的驱动与文件系统,比如现在流行的SSD硬盘,正是发挥了Flash电原理而非机械原理的速度优势,并且很容易对现有硬盘系统进行直接替换。但换一个角度,在嵌入式应用中,这些特性确实大大增加了编程与设计的难度。

做了一个ic钥匙扣

为了体现新一代电子工程师的创新与敬业精神,特将一块闲置已久的CPLD改造成了钥匙扣,十分有型、万分喜爱:

Altera芯片的质量非常好,手钻打了半个小时也打不通,后用了台钻才顺利开孔,庆祝一下吧!

简易mini温度计

最近天气变化不定,应咱家那位要求,用一个晚上时间做了一个简易的电子温度计。

找了一个闲置的计时器改造,这个计时器是以前5元买的,不是非常实用,甚至不能断电,只能拔电池。来个生前特写:

好家伙,它的电路倒是很简单,一个软封包搞定,我要做这么小就要费点力气了。原来的按键可以继续用,蜂鸣器、液晶(段式液晶难驱动、没背光)、原PCB都不需要了。

找了手上一个最小的单片机2052,一个MP3拆的锂电池,一个数码管,运气还真不错,大小刚好合适,测了一下是共阳的,稍微量了一下外壳距离就开工了。一场翻云覆雨之后,电路就做好了:

用了以前一个实验板下载程序,为了节省空间使用了内部振荡器,但振荡器的频率不是非常确定,所以调18b20花了些功夫。18b20真不是什么好东西,大家在正规项目里就不要使用了。最后成品如下,还是挺像模像样的:

电路图:

材料清单:

STC12C2052单片机*1 DIP 10元
18b20传感器*1 TO-92 8元
4位共阳数码管*1 5元
复位电容*1 10uF 0.1元
复位电阻*1 10k 0.05元
限流电阻*4 220欧姆 0.4元
锂电池*1 150mAH 8元
外壳*1 旧计时器拆机 5元

40元不到,一个简单的DIY温度计就完成了。

锂电池充电芯片CN3052A调试记录

本文作者:云飞工作室,戴晓天

联系方式:Automatic.dai@gmail.com

原文地址:www.yfworld.com

Automatic.Dai :  之前没有接触过手持设备,所以没有锂电池供电系统的设计经验。之前对于锂电池,都是使用专用充电器进行充电的。但是对于手持设备而言,最好有集成的充电电路。经过一番调查了解之后,最后从成本和供货渠道上综合考虑,决定使用CN3052A。

一、芯片介绍

CN3052A是一款常用的500mA单节锂电池充电芯片,该芯片使用恒压恒流方式充电,具有使能、芯片/电池温度保护、充电指示灯等功能。芯片主要特点如下:

使能功能提供了一种可控的充电方式,充电指示灯简化了系统的设计。

二、硬件连接

设计中不需要使用电池温度检测和使能功能,所以使用了以下电路:

Read more »

超低压差LDO-TPS7333调试记录

我在一个低功耗项目中需要使用单节锂电池对设备进行供电,锂电池的供电电压为3.6–4.2V,最坏情况下只有3.5V左右,而系统所需电压是3.3V,电压差只有0.3V。如果使用普通的LDO芯片,压差至少在0.8V以上,这时还需先通过DC-DC进行升压,再由LDO降压,增加了电路的复杂性,同时占用了大量PCB空间。经过多方寻找,发现了TPS7333这款超低压LDO,效果颇为满意,特将调试过程记录在此。

一、芯片介绍

TPS7333是TI公司的一款超低压差LDO,该芯片属于TPS73XX系列,后两位序号XX表示该芯片的输出电压值。如TPS7333表示3.3V,TPS7348表示4.85V,TPS7350表示5.0V,该系列还有一个输出电压可调的版本,后缀为01。

该芯片的主要特色如下:

可见其主要特点就是超低压差(35mV @ 100mA),带复位输出,静态电流低。

该芯片共有8pin,其引脚定义如下:

其中,N_EN为使能端,低电平有效。N_RESET为复位输出端,SENSE为反馈端,对于可调输出版本需要连接设定电阻,对于固定输出只要直接连接OUT。

其典型应用电路如下:

注意输出端电容,为了使系统稳定,需要保证CSR在1欧姆左右。在使用小容量的钽电容时,因为ESR低,系统不易稳定,这时可通过串接0.7欧姆左右的电阻解决。但是如果电容的值比较大(10uF以上),只要保证ESR在0.1欧姆以上,就不会出现问题。

该芯片的输出特性曲线如下,可见其压差极低,在500mA时只有0.225V的压降。

Read more »

十字旋转LED点阵的制作

上次说道,乘着国庆佳节时,我将这个旋转LED点阵搞定了,按照之前的约定,现将制作过程和经验与大家分享。本制作套件购买自51电子,文中部分图片也是从该网站获得,如需购买请与该网站联系。

制作过程分为三个阶段:

1、硬件制作:电路板焊接,调试;

2、机械制作:外壳打孔,装配;

3、编程调试:编写软件,进行程序调试。

一、硬件制作

整个硬件分为两部分,即旋转主板部分和无线供电部分。无线供电部分类似变压器原理,替代了传统的电刷供电,提高了使用寿命,并且几乎没有噪音。主板主控为STC51,相信大家都很熟悉了,4组I/O都接了LED,共2组32个。一组为红色,一组为绿色,所以该点阵能实现双色显示效果。红外收发是为了能让CPU知道起始位置,从该位置开始刷新要显示的内容。

可以这么说,这是迄今为止最考验我焊接水平的小制作。首先,元器件标号比较混乱(给了一张黑白的装配图,不是很清楚),有很多洞洞没有用,很容易搞错。再者,LED是立在PCB上焊接的,当时我找了一个朋友帮忙,焊接32个LED仍用了2个多小时。

Read more »