……你自己把逻辑锁死了。收到一回4字节序列后,flag1置位,之后发送数据。可是在发送数据的时候又会进入中断的,由于接收缓冲区中还是那4字节的序列,于是flag1再次被置位……于是乎进入永不停歇的死循环。
你的串口中断应当判断一下是发送还是接收……
CH375是一个国产USB转接芯片,集成了U盘 *** 作固件,可以直接把U盘当做一个一个的扇区来读写,加上一个文件系统,你就可以在U盘上拷贝,粘贴,新建等Windos下具备的文件 *** 作功能了。
另外其还支持从机模式,可以让单片机或DSP通过它连接到电脑上实现一个自制的USB鼠标/键盘或U盘等。其兼容USB20协议,最大传输速度为USB11的12Mbps。对于一般的嵌入式应用来说,速度已经能满足需求。
更可贵的是,这时一片民族芯片,意味着你面对将是中文PDF和一个完善的网络技术支持氛围。使用CH375将让你学习USB协议不再枯燥,不再是纸上谈兵。下面具体阐述一下这两天自己恢复调试该芯片的“艰辛”,其实该芯片并不脆弱,我焊了又拆,拆了又焊上,还是可以用。主要是制造这个芯片南京那家公司技术支持资料太丰富了,太详细了,以至于让我在做电路时也是小心翼翼,最后反而吃了大亏。
一、CH375分为A和B两个系列,A系列支持5V供电,B系列不仅支持5V还支持33V。
二、B系列中,如果使用5V供电,则V3引脚通过001uF电容接地,如果是33V,则V3接33V,这点很重要;
三、CH375资料上说对于电源VCC引脚端应该接001uF的电容到地,该电容功能为退耦电容,同时,晶振必须为12MHZ,晶振引脚和电容引脚尽量近CH375的Xi和Xo引脚。如果硬件连接正确,上电时,在Xo端应该可以检测到12MHZ的波形,在没有示波器的情况下,可以用万用表检测Xi和Xo引脚是否为电源电压的一半,即如果是5V供电,此时两个引脚的电压应该接近25V,我在自己制作的腐蚀板中变遇到了晶振无法起振的情况,开始怀疑是引脚离得有点远,于是改变了电容的放置位置,使之更近ch375两个引脚,也没有起振。然后怀疑是CH375坏了,前后一共换了3片还是没有起振,最后在反复检测电路后,换了一颗晶振,我把所有的怀疑都用完后,最后目光聚焦在了两个0603封装的22P电容上,当然开始我还不是怀疑电容有问题,而是ch375应用资料上给的电容是15p的,但手上又没有这个容值的电容,电容都焊下来了,因为太小,掉哪去也不知道,于是重新换了两个22p的,结果却“奇迹般”的起振了。
难道困扰了我两天的竟然是两颗坏了的晶振电容?因为那两个小东西也不知道躲哪去了,我不能再揪出来拷问,那就认为是人品问题吧,遇到了两个坏了电容,或者是自己焊接的时候不小心焊坏了,罪过。。。后来我还原了电路,一层一层验证,取下了VCC的退耦电容,可以工作;再把两个电容移回原来离CH375较远的位置,还是可以起振。仅以此调试经验警醒自己,我怀疑的逻辑,相信大多数人也是这样,越大的,越复杂的,越脆弱,呵呵,这种逻辑有问题么?调试是一个痛苦的过程,调试又是一个快乐的过程,恭喜你,嵌入式工程师,尝尽人间苦乐!
四、当上电后CH375能起振了,这时还可以测一下25和26脚的电平,26为高,25为低,说明硬件复位时成功的,否则你就要看下RST连接的一个到VCC的047uF电容那是否有问题了。另外就是,在晶振没有起振的情况下,往CH375写数据,那个指示灯会不停的闪,写一此,闪一次,这是不正常德。
五、当硬件能起振了,复位也完成了,请将8位数据口接到你的微控制器(单片机或DSP等),然后你还要接A0,WR,RD,INT,最后保证在软件 *** 作芯片的时候CS为低。如此,通过往CH375写命令CMD_CHECK_EXIST(0x06),接着写一个任意8位数据,稍微延时几个毫秒,CH375会返回你一个数据,这个数据是你写的数据的取反,如果你收到了这样一个取反的数据,恭喜你,你的硬件和底层软件读写 *** 作成功了,接下了便可以开始自己的USB协议解析之旅。如果你收到的数据不是正确的取反数据,那么请仔细检查在没有任何线连接的情况下,晶振是否起振,复位是否成功,如果晶振已经起振,你已经成功了一大半,至于读写的时序,网上到处都是,51的,AVR的,找一个可以用的,稍作移植便可以使用。底层 *** 作成功,是后续分析和学习USB协议的关键。
单片机系统可以分为软件和硬件两个方面,我们要保证单片机系统可性就必须从这两方面入手。
首先在设计单片机系统时,就应该充分考虑到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响。我们以HOLTEK最基本的I/O单片机HT48R05A-1为例,它内部提供了看门狗定时器WDT防止单片机内部程序乱跑出错;提供了低电压复位系统LVR,当电压低于某个允许值时,单片机会自动RESET防止芯片被锁死;HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干扰对芯片的影响。
当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:
① 测试单片机软件功能的完善性。 这是针对所有单片机系统功能的测
试,测试软件是否写的正确完整。
② 上电掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进
行多次开关电源,测试单片机系统的可性。
③ 老化测试。测试长时间工作情况下,单片机系统的可性。必要的话
可以放置在高温,高压以及强电磁干扰的环境下测试。
④ ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的
可性。例如使用静电模拟器测试单片机系统的抗静电ESD能力;
使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。
当然如果没有此类条件,可以模拟人为使用中,可能发生的破坏情况。例如
用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。
用大功率电钻近单片机系统工作,由此测试抗电磁干扰能力等。
以上就是关于stc单片机串口测试程序,串口接收再发送问题全部的内容,包括:stc单片机串口测试程序,串口接收再发送问题、求助51单片机+CH375B读写U盘测试程序的问题、通常采用什么方法测试单片机系统的可靠性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)