|
毕业到现在,一直从事单片机以及佑华的语音IC已经快7年了,还未换过工作呢!一直想写点什么,一是有点忙,二是经验不够,三是文采不好吧,直至今日,才敢将此文灌于网上,拍之以砖,见笑了! 谓之七年之痒.
64,32,16,8位的MCU,大家都见多用多了,但4位的CPU,想必是少见少用了吧,
在此,只是从开发者的角度去讨论语音IC的开发情况等,我想应该还是有人对这有感兴趣的,价钱及IC的优劣势不作讨论。
//------------------------------------------------------------------------------------------------------------------------------------
铺述:
佑华最经典的语音IC应该是AM4E系列的IC了,4位的MCU+DAC , 1通道语音,双通道melody, 外接一个振荡电阻,便可实现系统的最小化。
(下面所说的都是以此系列IC为例说明)
//------------------------------------------------------------------------------------------------------------------------------------
IC硬件:
刚工作不久时,一位长者告诉我,任何单片机,从4位到32位的,不论哪个牌子的,我们只需要知道三样东西,便可以进行开发了,一是指令,二是寄存器,三是IO。而我根据工作经验总结后,只需要两样就可以了,一是寄存器,二是IO,因为现在基本上都有对应的C编译器,所以,指令这块,是可以省了的!况且,用汇编是件痛苦又无耐的事(佑华本身也有8位的单片机,工作上有时也是需要汇编来开发的,因为它没C。 ),这些说法,通俗地说,就像武功的内功和外功一样。呵呵!
指令介绍:它有汇编语言,但比较少用。也有它自家开发的语言,类似C语言的语言,我们一般把它叫做EzCode, 意思是Esay Code,
也就是容易编写代码的意思吧,95%都是可以使用EzCode来开发。
比如有一首歌 abc.wav,16KHz采样的,则程序播放它是:playv(abc,16k),声音就出来了,
两寄存器相加 r0=r1+r2,
读PRA口 r0=PRA
写0xf到PRB口 PRB=0xf
判断变量 r0==5 ? TureA:FailB
TureA: r0=4,playv(abc,16k)
FailB: r0=3,playv(edf,16k)
寄存器介绍:特殊寄存器都是封包起来的了,基本上不需要操作特殊寄存器,普通拿来用的内存寄存器RAM,本来是有100多RAM的,
但系统要用40多个,留给用户一般至少都有50个或以上.
IO介绍: 有4~24个IO,递增为4,随母体不同而不同,需要选定是输入还是输出。4E系列没有AD,
ROM: ROM一般很大,因为它需要和语音内容一起编译并烧录入去IC,比如烧录一个84秒的语音IC,差不多需要半分钟。
//------------------------------------------------------------------------------------------------------------------------------------
IC实物:
IC有以下几种封装:
FLASH DB:见下图,此IC可重复烧写,因为它后面带有一个FLASH芯片,我一般是用这种IC来烧录程序进行测试的
(原文件名:flash DB.jpg)
OTP DB:一次性烧录,这种封装方便接线,只需要接上电源,按键,喇叭就可以出声音了。一般是出样DEMO给客户的。
(原文件名:otp db.jpg)
OTP DIP:一次性烧录,像普通的SKDIP-28封装或者DIP18那样的封装,需要将所有的VDD,GND连起来,等。
(原文件名:otp dip.jpg)
OTP SOP:一次性烧录,贴片,同上。
(原文件名:otp sop.jpg)
IC烧录器:
编写好的程序,经过编译后,生成二进制烧录文件,用下面两种烧录器分别烧录FLASH DB 和OTP
FLASH WRTER:
(原文件名:flashwriter.jpg)
OTP WRITER:
(原文件名:otp writer.jpg)
//------------------------------------------------------------------------------------------------------------------------------------
EzCode开发环境:
在业界来说,佑华Ezcode确实是易于上手和开发它自家产品的IDE,它的方便和强大功能比较难以用三言两语来表示,只说下重点的吧!
1,它的开发环境语言类似于C语言,很方便,.
2,按键扫描程序已经内置于Ezcode中,不需要自己写扫描程序,只需写按键功能,这有点像VC++编写的上位机应该程序. 只需定义某个按键Label, 再编
写按键功能就OK了! 即使用8位机,有时写这些按键程序都挺麻烦的,比如A可以打B,B不能打断A,C可以重触发,D需要按住则播放,松手则停,B可以
关C和D, 别说写了!听起来就有点头晕吧!
3,一个前景两个背景,感觉就像可以支持三个任务在跑一样,这IDE将4位的MCU发挥到了极致。
4,Ezcode已经内置IR红外线代码,I2C等子程序接口以方便调用
先简单试范个功能程序
已知:现有A,B两键,声音为一首歌,名为song,
要求:A键功能为ON/OFF,也即按一下唱,再按一下停。
B键功能为EUI,也叫声控,触发一次唱完,唱完后才能再次触发。
输出脚PRB3为3Hz闪,PRB2~PRB0为顺闪。
解:
1,新建项目,选对应母体(秒数和IO),设置输入输出引脚,Include音源“song”
2,添加输入输出Lable (x表示为空)
(Lable name) (pra0) (pra1)
Keyon k_A k_B
Keyon_k_off k_Aoff x
Keyoff x x
3,编写按键功程序,如下图:
(原文件名:ezcode.jpg)
4,编译并烧录到IC,然后插到目标板上测试功能。
(原文件名:targetboard.jpg)
//------------------------------------------------------------------------------------------------------------------------------------
掩膜生产及帮定:
语音IC之所以便宜,是因为它是掩摸生产的,且有一定的量才能够下单,下单是要交7000~10000的光罩费(下够一定量则可以退光罩费),相当于拍照的菲林。生产周期约为30~45天左右。IC回来后,是一个晶源一个晶源的,需要使用高压的水枪来切割成一个个独立的裸片IC,一个语音IC的体积也是不
大的,大秒数的有黄豆粒那么大个,小的话,比一个米的四分之一差不多。
最后交给工厂邦定,自动邦定机有500,510,520,530型号,高级的是530, 小厂可能是500,封成我们俗称的牛屎堆。
(原文件名:IMAG0216.jpg)
俺公司就有一台手机邦定机和一个显微镜,用于分析IC不良,这也是属于我的工作范畴。我手动机邦的!
(原文件名:b1.jpg)
(原文件名:b2.jpg)
嘿! 公司人不多,小公司是什么都需要负责的啦!写程序(佑华的4位,8位《常规单片机》都要写,PIC和ELAN的也都写过),焊DEMO,拜访客户,处理不良品,邦定测试,买零件,买文具,送货,收钱,装软件,维护电脑。几乎以一顶十。我的天呀!只能在此抱怨下了! 兄弟可怜下吧!
至此,一款IC便生产出来了!
//------------------------------------------------------------------------------------------------------------------------------------
附上一些客户在邦定不良的图片:
(原文件名:IC1.jpg)
(原文件名:IC2-2.jpg)
(原文件名:IC6.jpg)
这是正常的PAD点!
(原文件名:正常PAD点2.JPG) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|