查看: 6314|回复: 24

[已解决] 求助帖 关于K60串口使用的源代码编写(已解决)

[复制链接]

该用户从未签到

8

主题

69

帖子

0

中级会员

Rank: 3Rank: 3

积分
207
最后登录
1970-1-1
发表于 2014-8-30 21:26:24 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-9-3 14:34 编辑

想通过查看参考手册设置寄存器来使用K60的串口
在碰到计算波特率时迷茫了 知道要用时钟计算波特率 写入SBR和BRFA 但是参考手册我还没有看时钟那一张
不知道自己产生工程的初始的串口时钟是多少
所以想问问大家 在不改变锁相环的情况下 串口计算波特率的时钟会是多少?要是简述一下这个机理就再好不过了
还有看了数据手册里的波特率生成的例子 还是不是特别理解 要是有人能解释一下就更好了
谢谢啦!

(我生成工程的方式:File-New-Bareboard Program)
我知道答案 目前已有24人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-9-1 09:30:51 | 显示全部楼层
    楼主你好
    串口波特率的生成请看参考手册K60P144M100SF2V2RM的“52.4.4 Baud rate generation”章节介绍


    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-9-1 09:38:14 | 显示全部楼层
    利用上述章节公式就可以计算波特率了。
    Table 52-407.jpg

    BRFD value可以通过“Table 52-408. Baud rate fine adjust”表格查询获得。

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-1 09:42:57 | 显示全部楼层
    FSL_TICS_Robin 发表于 2014-9-1 09:38
    利用上述章节公式就可以计算波特率了。

    这个我看明白了 还有一个问题 就是不知道这里的模块时钟我该取多少 也是10.2M吗 我现在串口可以收到数据了 就是查看的数据都是错的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-9-1 10:01:22 | 显示全部楼层
    本帖最后由 FSL_TICS_Robin 于 2014-9-1 10:02 编辑
    姜小乱 发表于 2014-9-1 09:42
    这个我看明白了 还有一个问题 就是不知道这里的模块时钟我该取多少 也是10.2M吗 我现在串口可以收到数据 ...

    5.7.9 UART clocking.jpg

    Table 5-2. Module clocks (continued).jpg

    Figure 5-1. Clocking diagram.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-1 10:35:09 | 显示全部楼层

    谢谢!之前这个我也看到了 应该是总线时钟 系统时钟的一半 在我的开发塔上应该是48M 我说的对吗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-1 10:40:34 | 显示全部楼层

    还是把我仿造例程写的代码贴上来吧 不知道哪里出错了 串口往外发f 而查看到的都是F0F0
    #include "derivative.h" /* include peripheral declarations */

    void uart_putchar (char ch);

    int main(void)
    {
            unsigned int sbr,brfa,syc;
            int counter = 0;
            SIM_SCGC1 |= 0x800;// 开启UART5时钟
            SIM_SCGC5 |= 0x2000;// 开启PTE时钟
            PORTE_PCR8 |= 0x300;//  设置PTE8为UART5_TX
            PORTE_PCR9 |= 0x300;//设置PTE9为UART5_RX
            UART5_C2 &= ~0xc;// 关闭UART5的发送与接收
            UART5_C1 = 0;// 校验位设置
            syc=48000;
           
             sbr = (unsigned int)((syc*1000)/(115200 * 16));//计算SBR            
                
                UART5_BDH |= ((sbr & 0x1F00) >> 8) & 0x1f; //写入SBR高低位
                UART5_BDL |= sbr & 0xff;
                
                brfa = (((syc*32000)/(115200 * 16)) - (sbr * 32));//计算BRFA
                    
                UART5_C4 |= brfa & 0x1f; //   写入BRFA

                    UART5_C2 |= 0xc;// 使能UART5的发送接收       
           
            for(;;) {          
                       counter++;
                       uart_putchar('f');
                      
            }
           
            return 0;
    }
    void uart_putchar (char ch)
    {

        while(!(UART5_S1 & 0x80));//查看发送完成标志
       
        UART5_D = (int)ch;//给数据
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-9-1 10:51:53 | 显示全部楼层
    楼主你用的K60的芯片全称是什么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    69

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    207
    最后登录
    1970-1-1
     楼主| 发表于 2014-9-1 13:32:24 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2014-9-1 10:51
    楼主你用的K60的芯片全称是什么?

    MK60DN512VMD10  是飞思卡尔TWR-K60D100M开发塔 谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    705

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1745
    最后登录
    1970-1-1
    发表于 2014-9-1 14:30:28 | 显示全部楼层
    姜小乱 发表于 2014-9-1 10:35
    谢谢!之前这个我也看到了 应该是总线时钟 系统时钟的一半 在我的开发塔上应该是48M 我说的对吗 ...

    你bus时钟配的多少啊?
    看你的芯片主频是100M的,就不知道你的bus时钟配多少了?
    50M吗?
    你自己看看你的代码呢。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 19:58 , Processed in 0.109419 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表