学用LM3S811,硬件是第一步。EK-LM3S811三个版本的电路各不相同(参考帖子https://bbs.21ic.com/icview-288188-1-1.html),其中豪华版和剪裁版比较类似,国产版差异大,从它们的原理图结合数据手册,谈几点个人体会,同时讨论一下JTAG接口解锁问题,希望有助于初学者对该器件有个大概了解:
1. LM3S811是Cortex-M3核,它要跑起来,至少具备哪些条件呢?从最小运行系统来看,其实它跟8/16位机没太大区别,尤其是MSP430。
• 工作电压:3.0V~3.6V
• 时钟:虽有两个专用的时钟引脚,但内置有12MHz振荡器可作时钟源,根据应用情况可以不用外挂晶振,三个版本的EVK上都配置了外置的6MHz晶振
• 复位电路:内带POR电路,可以不使用外部复位电路(复位脚要上拉到电源),当然也可以用外部复位电路,这个跟其它MCU用法没啥区别
• 编程调试接口:可以像EVK那样使用JTAG/SW接口,最多占用5个引脚
• 不用的引脚的处理建议
2. GPIO驱动能力分为可配置的2mA、4mA、8mA三种,作为输入口时,GPIO可以兼容5V的电平(姑且认为是配置为GPIO时可以兼容,配置为复用功能口时,是否也如此本人还不确定)。国产版上,接口的LM3S3601的PB1就是直接通过一个串联的49.9Ω电阻连接到5V的USB接口电源端。
3. 豪华版和剪裁版上使用了FT2232接口芯片,该芯片的工作电压取自USB接口的电源引脚+5V,而LM3S811最大电源输入是3.6V,这两种EVK上使用了三态输出的四路总线缓冲器SN74LVC125A和SN74LVC126A作为两个芯片之间的数据接口的衔接。这里有些疑问:
•首先,SN74LVC125/6A虽然是3.6V以内供电要求(EVK上用3.3V供电),但其门输入电压是允许到5.5V的,这个倒可以理解,可以将FT2232输出的接口线的电平转到LM3S811可以接受的JTAG接口的电平。
• 其次,看看FT2232的用法,其实它支持5V和3.3V两种总线接口的,可以通过VCCIOA/B引脚来配置,而EVK的原理图上可以看到,是配置成3.3V的接口电平的(截图)
• 所以,产生一个疑问:既然已经配置成3.3V的总线接口了,为何还要通过125A和126A来过渡呢?不能直接相连吗?
• 另外,LM3S811的GPIO被配置成复用功能口时,是否也兼容5V的逻辑电平呢?如果能兼容,那么FT2232也可以不配置成3.3V的总线接口电平,直接可以用5V的接口电平与LM3S811的JTAG口相连,可以不使用SN74LVC125A和SN74LVC126A。
• 这SN74LVC125A、SN74LVC126A是作电平转换用,还是作时序缓冲用呢?抑或是其他用途?如果作电平转换用,JTAG接口是存在两个方向的数据流,而这两颗芯片的电源都是3.3V的,那FT2232为何配置成3.3V的总线接口电平?配成5V的不就行了吗?如果是时序缓冲用,没研究过JTAG的底层时序,原理图上我也看不出各路信号经过的门数所蕴含的道道来,有谁能指教一下?
4. 关于JTAG口被锁的问题,网上有很多帖子提到,解决方法也大多采用周立功的方案。很好奇为何会有被锁这种问题,查了些资料想搞清楚。首先,LM3S811的数据手册上有提到如下内容(贴上英文原文和周立功翻译稿):
从这里可以看出,被锁的原因应该是上电后JTAG功能还没来得及起作用,用户程序就已经将MCU的JTAG引脚配置成GPIO了,所以导致无法JTAG连接。所以,在评估板的用户手册里,都提到“PB7 should not be used as a GPIO”、“Do not configure JTAG/SWD pins (including PB7/TRST) as GPIO”。软件避免锁死的办法可以参考其他网友的帖子,这里不赘述。总的原则有二:如果资源够用,尽量避免复用JTAG引脚为GPIO;应用程序的开头增加防锁死的软件处理机制。
不过,细看EVK的原理图,LM3S811的JTAG的五个引脚中,/TRST只是接了上拉电阻,并未连接到对外的JTAG接口上,
查了/TRST的功能叙述如下(同样贴上中、英文):
就是说,/TRST这个引脚可用来对JTAG功能模块进行复位,而在EVK用户手册末尾对JTAG接口进行说明时,写到:
就是说,这个引脚在EVK上没有用来硬件复位JTAG,而是通过软件指令实现复位的。对于解锁的问题,曾看到有的帖子说可以尝试连接前先按下EVK上的复位按键,但有的人试了没奏效。在阅读LM3S811数据手册的系统控制章节,对于外部复位和上电复位的描述引起我的注意,同样贴图如下:
从中看出,LM3S811的外部硬件复位并没有复位JTAG部分,上电复位POR才复位JTAG控制器,按下评估板的复位按键属于外部复位,不是上电复位。而从EVK原理图上看,连接PC和LM3S811的接口芯片并没有控制LM3S811的电源的通断,USB电源线经过降压稳压后直接给LM3S811供电。所以我觉得通过JTAG下载程序时无法实现上电复位,前面说的按复位尝试恢复JTAG连接的方法缺乏理论依据。
所以,我想,如果LM3S811已经被锁,能否通过在JTAG连接前将/TRST拉低一下来恢复JTAG连接即解锁??这个只是我的一个设想,手头没有被锁的板子,也暂时不敢故意这么去试,将来遇到了再验证。有兴趣的朋友如果觉得这样有道理,有条件的前提下可以试试:)。
以上就是在使用LM3S811前我觉得最起码需要考虑的硬件问题,仅供参考,欢迎朋友们对有疑问的部分进行指教或补充素材。 |