打印

LM3S811使用心得—从零开始学Cortex-M3内核单片机(二)

[复制链接]
3610|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reayfei|  楼主 | 2011-12-3 13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 reayfei 于 2011-12-3 13:57 编辑

LM3S811使用心得—从零开始学Cortex-M3内核单片机(二)

关于EK-LM3S811的问题集锦

1,LM3s811有什么优势?
    LM3S3xx,6xx,8xx是Stellaris里面配置最平民化的产品。这个系列不带USB,CAN,Enet接口。而LM3S811这颗芯片在这个系列中是比较有代表性的一款。所以:
      1. LM3S811因不带高级外设,是作为入门级的比较好的一个选择。
      2. 使用LM3S811开发入门或者完成设计以后,可以pin topin向下兼容LM3S6xx,3xx的软件代码。
      3. 还有,性价比高。
      4. 显然是我们的主推产品,我们称之为Hero Product。
      5. 主推产品,性价比高,当然出货量大咯。

2EK_LM3S811为何要设置那么多过孔?
      在走线时候上下两层的地应该打上均匀分布,数量适当的过孔,以减少上下层的电容效用。

3,EK_LM3S811移植μCOSII有什么好处?
    到ucos的官网上有现成的TI M3版本,不用移植。(它提供的IAR版本的,MDK的没有。)

4,EK_LM3S811上的白条是液晶么?
    不是,是导光板。

5,请教EK-LM3S811用作调试器调试外部芯片要怎么弄?
    可以通过jtag口对外进行仿真。不要外接jtag来仿真开发板,开发板的jtag口是对外仿真的,如果接在一 起,连个jtag仿真电路会有冲突。

6,LM3S811串口下载程序问题?
    LM3S811开发板中自带boot_serial中,自动检测某个GPIO引脚(该引脚的作用是接收更新程序的信号)是被屏蔽掉的。出厂的芯片中的boot_serial只检测2K(默认的应用程序起始位置)处是否存在有效的堆栈指针和复位向量,如果有的话则执行应用程序,如果没有则调用接收更新程序的代码(当然刚出厂的芯片2K后是不会有应用程序的,所以刚出厂的芯片第一次连串口用LM Flash Programmer下载程序是没有问题的),但是第一次用串口下载程序后(从2K处写)就不满足再调用接收更新程序的代码的条件了(2K处已经有了有效 的堆栈指针和复位向量),所以就不能下载程序了。我想问的是为什么芯片在出厂时不把检测某个GPIO口作为更新程序的信号打开呢?如果想多次下载程序,芯 片第一次必须下载自己定义的boot_serial,这样的话,每个芯片就必须下载两次程序(一个改写后的boot_serial,一个自己的应用程序, 感觉写两次很麻烦),有没有好的解决办法呢?

解答:1. 我想问的是为什么芯片在出厂时不把检测某个GPIO口作为更新程序的信号打开呢?出厂时并不知道客户用哪个GPIO方便,这个是可以自定义的。
      2. 如果想多次下载程序,芯片第一次必须下载自己定义的boot_serial,这样的话,每个芯片就必须下载两次程序(一个改写后的boot_serial,一个自己的应用程序,感觉写两次很麻烦),有没有好的解决办法呢?谢谢了。
      811没有内置ROM Software,出厂烧在flash的bootloader,应该是引导到从0开始的flash地址的,并不是2k地址开始,也就是说,你使用出厂的bootloader烧写完程序后,出厂的bootloader就被覆盖了。dustdevil系列以后的产品,内置ROM中有bootloader,可以通过程序设定检测某个GPIO来触发下载程序。

7,通过LM3S811采集的数据能不能通过keil软件调试?ADC的采样序列到底是什么意思啊?
    可以看相应的寄存器,来查看采样到的数值。采样序列,会按照预先配置的顺序来自动进行采样,减轻 CPU 负荷,且能配置优先级。

8,LM3S811可以用ARM指令编程吗?
    M3只支持thumb-2指令集。

9,LM3S811的PWM输出问题?
    用MDK写了一个LM3S811的PWM输出程序,有个疑问:

    //Set PWM Pulse Wideth
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0);   //
设置PWM的脉冲宽度
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 1);
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, 12000);
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, 23998);
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_4, 23999);
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_5, 24000);

    PWM频率设置成了250Hz,对应于24000个时钟周期,当脉宽宽度设置成0、23999、24000,PWM出来都是高电平,如下图所示:MDK自带的Logic Analyzer


file:///C:/DOCUME%7E1/reayfei/LOCALS%7E1/Temp/msohtml1/01/clip_image001.giffile:///C:/DOCUME%7E1/reayfei/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg


file:///C:/DOCUME%7E1/reayfei/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gifPWMTest.jpg (177.91 KB)


2011-6-24 12:08

    那PWMPulseWidthSet(unsigned longulBase, unsigned long
ulPWMOut,unsigned long ulWidth)的脉宽值设置成什么的时候,才会有全低的电平出来呢?

    继续弄了一下,发现可以通过PWMOutputState(PWM_BASE,PWM_OUT_0_BIT, false)出来低电平,不知还有没有其它方法:
   // Enables the PWM generator block.
    PWMGenEnable(PWM_BASE, PWM_GEN_0);  //使能PWM发生器,开始产生PWM波
    PWMGenEnable(PWM_BASE, PWM_GEN_1);
    PWMGenEnable(PWM_BASE, PWM_GEN_2);
   SysCtlDelay(0xffff);
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_1_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_2_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_3_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_4_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_5_BIT, false);
   SysCtlDelay(0xffff);
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, true);  //使能PWM输出
    PWMOutputState(PWM_BASE, PWM_OUT_1_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_2_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_3_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_4_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_5_BIT, true);
    while(1)
    {
        ;   
    }

file:///C:/DOCUME%7E1/reayfei/LOCALS%7E1/Temp/msohtml1/01/clip_image001.giffile:///C:/DOCUME%7E1/reayfei/LOCALS%7E1/Temp/msohtml1/01/clip_image004.jpg

10,LM3S811设置pll问题
    SysCtlClockSet(SYSCTL_SYSDIV_10| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                  SYSCTL_XTAL_6MHZ);
设置以后为什么系统时钟总是显示32.4MHz ?
设置PLL之前必须先将LD0设置为2.75V 设置结束以后再设置为2.50V,如果你不设置LDO应该是PLL不生效的。

11,lm3s811不用U-cos如何实现多任务
      一个在cortex-M3上运行的操作系统,已经过数十个产品验证。
代码很短,如果不算注释只有200行左右,及其短小,但很好用
http://bbs.**/viewthread.php?tid=97654

12,LM3S811 FIFO接收
    我把接收FIFO设为了4字节触发,PC一下发了6个字节数,想请问下剩下的两个在什么时候会收到呢,还有就是我在中断接收中处理收到的4个字节时剩下的两个会不会丢失呢???
    uart的FIFO是16个字节,设置4字节触发,只是FIFO中超过4字节触发中断,不影响后面字节的接收;如果FIFO中收到16个字节,还不把数据取走,才会丢失数据。

13,LM3S811中防JTAG失效的函数中有个KEY,这个key有何用
     按住按键,程序就不向下运行了,也就不会执行锁住jtag的程序。

LM3S811使用心得—从零开始学Cortex-M3内核单片机.pdf

205.34 KB

相关帖子

沙发
liliang9554| | 2011-12-3 22:10 | 只看该作者
期待(三)

使用特权

评论回复
板凳
czdo| | 2011-12-4 09:35 | 只看该作者
呵呵是的期待第三期呢

使用特权

评论回复
地板
qixiyi| | 2011-12-5 08:27 | 只看该作者
顶一个

使用特权

评论回复
5
reayfei|  楼主 | 2011-12-5 17:59 | 只看该作者
:lol 4# qixiyi

使用特权

评论回复
6
568581185| | 2011-12-5 19:07 | 只看该作者
:)同样期待第三期。。。。

使用特权

评论回复
7
reayfei|  楼主 | 2011-12-5 21:56 | 只看该作者
6# 568581185 (三)已经推出了,请多指教!

使用特权

评论回复
8
reayfei|  楼主 | 2011-12-5 21:57 | 只看该作者
3# czdo (三)已经推出了,请多指教!

使用特权

评论回复
9
reayfei|  楼主 | 2011-12-5 21:57 | 只看该作者
2# liliang9554 (三)已经推出了,请多指教!

使用特权

评论回复
10
qixiyi| | 2011-12-6 18:48 | 只看该作者
很好

使用特权

评论回复
11
reayfei|  楼主 | 2011-12-8 08:20 | 只看该作者
10# qixiyi 谢谢

使用特权

评论回复
12
qixiyi| | 2011-12-8 12:27 | 只看该作者
这个也很好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:WiFi包邮:http://item.taobao.com/item.htm?id=19254130983

15

主题

395

帖子

2

粉丝