原创 C8051F单片机应用质疑三札

2012-12-3 12:44 3803 13 19 分类: MCU/ 嵌入式

引言


一直被网上对C8051F的火爆宣传鼓动得心痒痒,最近鄙人开始大量采用此类单片机。不料期间遇到许多莫名的问题,纠缠了很久。今日终于脱困,把心得收获发出,与各位大侠分享,欢迎不吝指正。



质疑一、型号:C8051F410     疑点:I/O口上电时竟然有弱上拉?



本人原先采用NXP LPC9xx单片机的,这次趁改版之机心血来潮也改为Silab的了。不料,板子焊接妥当,程序下载后,软开关启动不了电源了。
汗!开始以为是电源波纹太大,逻辑电平不对了。仔细分析查找(省略痛苦的经历500字),发现此单片机I/O口在上电时拉住了DC/DC的使能端,刚上电就被断了电,根本起不来。具体细节不表。
结论如下:C8051F系列的I/O口缺省是弱上拉100k(大家说100k还算弱吗?),虽然程序跑起来以后可以禁止这个上拉,但上电之初拿它没有办法啊。而我刚好要求上电时必须悬空的,故此才发现了这个问题。不才以为,这是一个失败的设计,至少是不高明的设计。我查看NXP、Freescale等单片机上电都是高阻的。


质疑二、型号:C8051F021  疑点:中断竟然响应于单条指令执行之中?



众所周知,MCS-51系列单片机的中断至少必须在当前指令执行完毕后才能响应。但我发现C8051F021居然在单条指令执行之中去响应了中断。我的判断是这样的。我在主程序中写一个变量,同时在定时中断中会读取这个变量,读取之后通过串口发送出去。我每次写同样的一个数,发送出来的数大多情况是对的,但有时会变为零。在排除串口通信有误的可能性之后,我试着在主程序写数的之前关闭定时器中断,写完之后再打开中断。没想到这个问题立马就消失了。注意我的汇编指令只有一条赋值语句。那么,唯一的解释就是这条语句被中断了。大家没有意见吧?
但鄙人查看F021的Datasheet第116页上赫然写有这样的话:
As soon as the current instruction is complete, the CPU generates a LCALL to ..... 惊愕!



质疑三、型号:C8051F410  疑点:I/O口设为模拟输入后输出竟然还有驱动?



手册上明确说如果I/O设为模拟口则输出的驱动方式(开路或推拉)设置寄存器将被忽略(见Datasheet 第156页)。Output Configuration bits of P0.7- P0.0(respectively): ignored if corresponding bit in register P0MDIN is logic 0
我输出寄存器是设为推拉的,输入设为模拟的。实际去测此I/O口时,发现总是高高的3.3V,永远下不来。很纳闷。无奈试着改一下输出寄存器方式为开路,就OK了。顿时faint!都怪我太相信Datasheet了!


以上是本人最近应用Silab的高性能51的一点遭遇,写出来供大家参考。正在用的遇到类似问题的兄弟可以少走弯路,外面想进来赶热闹的也请三思。


后记



C8051F系列的优点是集成了很多东西,资源相当丰富,你一看到就会非常惊诧,欣喜,产生想用的冲动。同时速度也高,反正各项指标都很高。但我的感觉是多而不精。这让我想起,大学时(90年代)买磁带单放机,有一种国产的功能极多,又便宜,而SONY、松下的就一个放音,还不能倒带,还狂贵。室友们纷纷买国产,半年后就杂音的杂音,卡带的卡带,甚至散架的散架。一有钱的哥们买SONY,到毕业时还是音质纯净、开起来还没有噪音,飕飕的。当时我感想就颇多。不知道这个比方合不合适,毕竟鄙人对C8051F了解还不够,认识还不深。不过我已经毅然把F410换为NXP LPC931了。想起来真折腾啊!

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

路边侬 2010-10-9 22:26

非常抱歉今天才看到Davse兄的回复。一直遗忘了这个博客。 首先感谢兄台的指教。关于批评在下的浮躁之处,使我受益良多。 不过,Davse兄似乎犯了与在下类似的毛病。很多地方你并没有看明白我说的意思,就加以了批评和“指正”。是不是也有点浮躁之嫌?

用户1156376 2009-9-2 11:07

不会用=不好用吗?

用户1531262 2009-6-4 10:27

对于质疑二,除了程序中可能有bug外,还可能是开发环境的毛病导致的。我们项目中碰到多次开发环境编译的问题,主要是丢语句,通过单步跟踪调试,很容易找到汇编中丢的语句。

用户558843 2008-7-24 13:20

没有必要为了一个系列的MCU 守身如玉,每有项目必此系列。吃饭用筷子,喝汤用勺。工具为人服务,用什么工具要看办什么事!

用户558843 2008-7-24 13:08

首先我要说的是 一个系列的器件比如MCU 或是 FPGA如果是你的第二应用器件 那么你就不可避免的要用前一个的标准来衡量后一个。 一、C8051F410上电IO口“竟”有弱上拉!!! 这话有点让我联想起天涯有个自称“易烨卿”的人惊呼:天呐!大学的寝室里居然是4个人共用一个卫生间! 单片机的种类很多,内核各异。针对不同应用需要选择合适的控制器。这也是嵌入式设计的一部分。 C8051F系列是一个类MCS51的内核制作的控制器系列(CIP51)。名字里都没有完全脱离51的影子。 去查查51的IO口,你就知道C8051F为什么这么设计了。这点质疑没有质疑的价值。 直接质疑为什么最高只能工作在50MHZ还不带MMU不是更好? 在这点里有一句是:C8051F系列的I/O口缺省是弱上拉100k(大家说100k还算弱吗?) 正常大家用的上拉电阻是多大? 100K的上拉和电路中正常使用的10K或4.7K上拉哪个是弱上拉? 二、中断响应于中断执行之中??? 看了你的话吓了我一跳!用了这么长时间的单片机,还有这么长时间的C8051F,离奇且诡异的说法中你的这种是第一次听到。在怀疑完自己孤陋寡闻之后,很快就释然了。这么大的BUG存在?结论只有一个:是你的程序有BUG!先查对datasheet,DATASHEET原文是"As soon as execution of the current instruction is complete, the CPU generates an LCALL to..."。翻译完之后应该是这样吧:“一旦当前指令执行完毕,CPU就会产生LCALL到...”(我的E文不好,高考的时候不及格,翻译的拙劣见笑了)。datasheet的说法没有问题!然后在看你的程序是怎么出问题的。变量在主程序中写,定时中断读取然后串口发送。关闭中断后发送不会出错。(不知道是定时中断中的串口中断嵌套还是定时中断中控制标志位。)既然后一种串口发送不会出错(此时串口不是工作在中断中的?)那怎么能说中断会中断掉执行中的指令?所以建议你有可能的话看看定时中断中的变量情况。还有最好别没验证就说这种明显违背常识的东西。我刚毕业的时候老宣布自己发现了超自然的东西,后来不了。顺便提一下,虽然号称90年代的学生,但是却是在90年代末期(从国产卡带机山寨化发展的时期推断)。你的文章里处处洋溢着一种夸张和浮躁。但却能老老实实坐下来打这多字,真是搞不明白你。 三、156页没有你说的句子。 154页“Port pins configured as analog inputs have their weak pullup, digital driver, and digital receiver disabled.” 155页“Output Configuration Bits for P1.7-P1.0 (respectively): ignored if corresponding bit in regis-ter P1MDIN is logic 0.” 还没看明白是怎么回事吗?模拟输入下 输出控制无效,功能被禁止。 再看看IO口的结构逻辑示意图。(P144) “各项指标都很高”,与“多而不精”同时出现 自相矛盾?解释? 做为用数据说话的工程师怎能犯这种错误(但我的感觉..)? 本来想叫你一声哥们,然后说我们一起探讨一下吧!对于C8051F这个系列我困惑的东西也很多。 后来考虑了一下 你还是自己称呼自己为鄙人吧!

用户80602 2008-5-30 16:25

不会吧,这么恐怖
相关推荐阅读
路边侬 2014-07-02 18:27
一种微电流测量方法的研究
1 引言 随着科技发展,极限条件下的试验测量已成为进一步认识大自然的重要手段,这些试验中往往测量的都是一些非常弱的物理量,比如弱磁、弱声、弱光、弱振动等,由于这些微弱的信号一般都是通过传感器进行电量...
路边侬 2012-12-03 12:43
解决了一个COldFireV1的奇怪问题
 本人已是第二次使用MCF51JM64器件,没想到非常不顺利。刚焊好的板子上电后,CodeWarrior调试器BDM怎么也连不上板子。报告SYNC错误,反复尝试无果。测量电源电压一切正常。无奈之下...
路边侬 2008-03-05 18:11
注意对NVRAM的两种理解
通常NVRAM被等同于NVM,称为非易失性存储器。通俗地说,掉电不丢失数据的存储器都可以称为NVRAM,诸如EPROM、EEPROM、FLASH、FRAM(铁电存储器)等。因此NVRAM并非指某一种存...
路边侬 2007-10-11 11:25
关于热插拔的准确理解
关于热插拔Hot-Socketing,ALTERA的诠释是这样的。...
路边侬 2007-10-11 11:13
关于latch-up的概念
使用COMS芯片时,会遇到一个闩锁(latch-up)的概念,我一直比较模糊。现在摘录ALTERA的一段描述,以供参考。<?xml:namespace prefix = v ns = "urn:...
EE直播间
更多
我要评论
6
13
关闭 站长推荐上一条 /3 下一条