查看: 3155|回复: 1

[sam-4s]编写串口程序遇到的问题与对策

[复制链接]
  • TA的每日心情
    无聊
    2014-12-25 15:47
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-14 21:35:16 | 显示全部楼层 |阅读模式
    分享到:
    折腾了好久才将一个简单的串口发送程序搞定,期间遇到各种莫名其妙的问题,总结一下,供大家参考:
    因为本人的开发环境是自己搭好的,具体参见
    https://www.cirmall.com/bbs/thread-6725-1-1.html
    遇到问题只能自己琢磨,好在终于解决了。
    问题一:串口没有输出,对比官方的例程,初始化是一样的,百思不得其解,后来终于在PMC里观察到UART0没有使能!
    void UartInit()
    {
      Pin UartPinsInitStruct;
      UartPinsInitStruct.mask=PIO_PA9|PIO_PA10;
      UartPinsInitStruct.pio=PIOA;
      UartPinsInitStruct.id=ID_PIOA;
      UartPinsInitStruct.type=PIO_PERIPH_A;
      UartPinsInitStruct.attribute=PIO_DEFAULT;
      PIO_Configure(&UartPinsInitStruct,1);
      PIO_DisableWriteProtect(&UartPinsInitStruct);

      PMC_EnablePeripheral(ID_UART0);   //串口时钟使能
      UART0->UART_CR = UART_CR_RSTRX|UART_CR_RSTTX
                       |UART_CR_RXDIS|UART_CR_TXDIS;
      UART0->UART_MR=UART_MR_PAR_NO;   //无校验                          
      UART0->UART_BRGR=100000000/(16*115200);              //波特率设定为115200
      UART0->UART_PTCR = UART_PTCR_RXTDIS|UART_PTCR_TXTDIS;
      UART0->UART_CR|=UART_CR_TXEN;     //发送使能
    }

    原因是PMC->WPMR写保护,必须把这个写保护关掉,关掉方法如下:
    void PmcDisableWP(void)
    {
      unsigned key=0x504D43<<8;
      if(PMC->PMC_WPMR&1==1)
      PMC->PMC_WPMR=key;
      else
        return;
    }

    问题二,波特率不对,导致乱码,这个比较简单,因为是移植MDK下的时钟初始化函数,想当然认为是120M的主频,后来用
    systick定时器测试了一下,确定是100M,
    波特率的计算公式为:MCK/(16*波特率)
    UART0->UART_BRGR=100000000/(16*115200);
    问题解决了,显摆下我的效果;
    a5.jpg

    完整工程见附件,里面也两个工程文件,带串口字样的是本工程

    libchip_sam4s.part01.rar

    7.63 MB, 下载次数: 34

    libchip_sam4s.part02.rar

    7.59 MB, 下载次数: 42

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-15 06:28
  • 签到天数: 3747 天

    连续签到: 60 天

    [LV.Master]伴坛终老

    发表于 2013-3-5 08:35:59 | 显示全部楼层
    也曾苦恼过,看似简单的串口用好它并不轻松呢!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-20 13:37 , Processed in 0.130788 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.