智能车制作

标题: 求助,野火K60的串口在超频情况下无法正常使用... [打印本页]

作者: ♂ˇ邂逅√♀    时间: 2013-2-4 13:30
标题: 求助,野火K60的串口在超频情况下无法正常使用...
求助:用野火K60的串口,超频到180时,执行
uart_putchar   (UART2, 'a');
显示出来的阿斯科码是C1,‘b’时是C2,以此类推
当手动发送‘a’时候,显示出来的是‘A’,以此类推。这到底是闹哪门子戏啊?大家有遇到不?

之所以用UART2,是因为,如果用UART2连数据都没有啊~~
看了底层,UART0和UART1是用系统主频频率,其他的都是用总线时间频率...纠结啊,蛋疼啊!~~各位有没有遇到同样问题的?求助!~~需要怎样修改底层呢?

作者: ☆_。寒泉..+    时间: 2013-2-4 14:09
在k60_fire.h里面#define FIRE_PORT           UART0
#define FIRE_BAUD           115200看看这东西,你直接用uart0就行了,不用初始化,波特率自己改就行,这个串口是野火系统初始化就开着的,不必初始化
作者: ♂ˇ邂逅√♀    时间: 2013-2-4 14:19
☆_。寒泉..+ 发表于 2013-2-4 14:09
在k60_fire.h里面#define FIRE_PORT           UART0
#define FIRE_BAUD           115200看看这东西,你直 ...

啊!~
我看到哪里写着

#define FIRE_PORT           UART1
#define FIRE_BAUD           19200

请问这分别是什么?需要怎样改不?
如果我像在180M的频率下用uart0在9600的波特率下发送的话~~~

作者: ☆_。寒泉..+    时间: 2013-2-4 14:21
#define FIRE_PORT           UART1
#define FIRE_BAUD           9600   //这个是波特率,自己改
作者: ♂ˇ邂逅√♀    时间: 2013-2-4 14:24
☆_。寒泉..+ 发表于 2013-2-4 14:21
#define FIRE_PORT           UART1
#define FIRE_BAUD           9600   //这个是波特率,自己改

请问这里的9600.跟串口初始化的
    uart_init(UART0,9600);有何区别?

作者: ♂ˇ邂逅√♀    时间: 2013-2-4 14:31
☆_。寒泉..+ 发表于 2013-2-4 14:21
#define FIRE_PORT           UART1
#define FIRE_BAUD           9600   //这个是波特率,自己改

已经按照你说的进行设置了。启动芯片之后,显示出一串野火的初始化数据
之后,进行串口数据的收发,还是一样不正常。。。

作者: ☆_。寒泉..+    时间: 2013-2-4 14:41
♂ˇ邂逅√♀ 发表于 2013-2-4 14:24
请问这里的9600.跟串口初始化的
    uart_init(UART0,9600);有何区别?

这个已经在sysinit里面初始化了,设置也是这么设置的啊,只不过你没找到,正常情况想应该是正常的,是不是你的串口助手哪块设置错了

作者: ♂ˇ邂逅√♀    时间: 2013-2-4 14:47
☆_。寒泉..+ 发表于 2013-2-4 14:41
这个已经在sysinit里面初始化了,设置也是这么设置的啊,只不过你没找到,正常情况想应该是正常的,是不是 ...

系统输出的信息
  野火kinetis核心板测试程序
内核频率:200MHz 总线频率 :50MHz
flex频率:50MHz  flash频率:25MHz
Software Reset
野火Kinetis开发板启动方式:flash启动
K60-144pin      
This version of software doesn't recognize the revision code.Flash parameter version 0.0.8.0
Flash version ID 3.3.16.0
512 kBytes of P-flash P-flash only
128 kBytes of RAM

是正常的

但是,我超频之后,超频到180去,显示也是正常,但是接下去我尽心串口的收发,还是有问题的。。。
郁闷!~~~~
我已经删了初始化段的代码的~~~
另外,请问这段初始化显示的代码在哪里?为何,我有串口初始化的话就不会显示这些个的?!~~~

作者: ☆_。寒泉..+    时间: 2013-2-4 14:54
sysinit.c
作者: ♂ˇ邂逅√♀    时间: 2013-2-4 15:11
☆_。寒泉..+ 发表于 2013-2-4 14:54
sysinit.c

看到了。这个,也是在不超频的情况下啊。
不超频时,
core_clk_mhz = 40;
然后,按照这个去设置波特率啊。。。郁闷郁闷郁闷。。。我现在就是想要在超频的情况下使用啊~~~

作者: ☆_。寒泉..+    时间: 2013-2-4 16:35
我在超频下使用正常,
作者: ♂ˇ邂逅√♀    时间: 2013-2-4 17:49
☆_。寒泉..+ 发表于 2013-2-4 16:35
我在超频下使用正常,

终于找到问题所在了。我配置cmg方法弄错了,原来不该那样配置锁相环的。。。都怪我没认真看清楚野火的文件,咔咔。谢谢你噢!~~
作者: 一毛钱~~~~~~    时间: 2013-2-4 18:08
话说,总线200,内核200都正常。。。
作者: ♂ˇ邂逅√♀    时间: 2013-2-4 18:27
一毛钱~~~~~~ 发表于 2013-2-4 18:08
话说,总线200,内核200都正常。。。

嗯嗯~~最后才发现是我自己傻了,频率配置弄错,哈哈!~~谢谢你热心解答...
作者: 野火    时间: 2013-2-5 12:35
a显示为A,这个应该是串口助手的问题,换一个看看。
printf函数所用的端口,是在启动的时候初始化。与在main里初始化没区别。
注意串口不要初始化两次,超频只需要设置宏定义,不要在main里再次初始化
作者: 野火    时间: 2013-2-5 12:37
我们的函数,是可以在超频的情况下使用的,你按照我们的超频设置来设,不要在main里设置。
建议看看我们三天入门的超频设置。
作者: ♂ˇ邂逅√♀    时间: 2013-2-5 13:33
野火 发表于 2013-2-5 12:37
我们的函数,是可以在超频的情况下使用的,你按照我们的超频设置来设,不要在main里设置。
建议看看我们三 ...

嗯嗯,看过了!~~了解,原来是我自己弄错了~~谢谢!~~
另外,我像请问一下,正交解码部分是否也是野火出品的呢?里面遇到一点小问题我想咨询一下,就是关于,文档有一句话:
查看FTM1_CNTFTM2_CNT就可知道当前计数值,查看TOFDIRQUADIR可以知道转向。

可是,我用串口打印的时候提示,TOFDIR、QUADIR俩寄存器没定义?!~请问怎么回事?

作者: 野火    时间: 2013-2-5 19:36
TOFDIR和QUADIR ,都是TOFDIR 寄存器里的一个字段,你搜索头文件即可找到

FTM0 的 QUADIR  寄存器是这样打印出来的:FTM_QDCTRL_REG(FTM0_BASE_PTR)  
作者: ♂ˇ邂逅√♀    时间: 2013-2-5 23:35
野火 发表于 2013-2-5 19:36
TOFDIR和QUADIR ,都是TOFDIR 寄存器里的一个字段,你搜索头文件即可找到

FTM0 的 QUADIR  寄存器是这样 ...

好的,我稍后试试!~~谢谢!~

作者: huyong9767    时间: 2013-3-31 13:23
♂ˇ邂逅√♀ 发表于 2013-2-4 18:27
嗯嗯~~最后才发现是我自己傻了,频率配置弄错,哈哈!~~谢谢你热心解答...

请问一下你是怎么配置的啊??
先谢过了

作者: ♂ˇ邂逅√♀    时间: 2013-3-31 14:20
huyong9767 发表于 2013-3-31 13:23
请问一下你是怎么配置的啊??
先谢过了

在header的K60_fire.h里面可以配置的。

作者: ♂ˇ邂逅√♀    时间: 2013-3-31 16:27
野火 发表于 2013-2-5 19:36
TOFDIR和QUADIR ,都是TOFDIR 寄存器里的一个字段,你搜索头文件即可找到

FTM0 的 QUADIR  寄存器是这样 ...

火哥吖,我蛋都碎了...求助啊,到底,FTM的正交解码,怎么用?!折腾了两天都弄不好...求助您老人家啦~~~先谢了!~~
麻烦能不能贴个初始化代码,还有个读数代码来?谢谢!~

作者: 野火    时间: 2013-4-2 21:47
♂ˇ邂逅√♀ 发表于 2013-3-31 16:27
火哥吖,我蛋都碎了...求助啊,到底,FTM的正交解码,怎么用?!折腾了两天都弄不好...求助您老人家啦~~~ ...

我们q群共享里很早就有公开代码啊,FTMx_CNT  就是脉冲,你读这个寄存器即可。编码器,需要接A、B相


[attach]43131[/attach]

作者: ♂ˇ邂逅√♀    时间: 2013-4-2 22:33
野火 发表于 2013-4-2 21:47
我们q群共享里很早就有公开代码啊,FTMx_CNT  就是脉冲,你读这个寄存器即可。编码器,需要接A、B相


...

火云邪神 大哥整理的代码吖。他有发过给我,也指导过我,可是还是不行...郁闷死了~~我现在是一相接高电平,另一项接编码器,然后用PWM来判断方向。呼~~
不过还是谢谢野火大哥哈!~~~拜谢...

作者: 野火    时间: 2013-4-3 07:56
♂ˇ邂逅√♀ 发表于 2013-4-2 22:33
火云邪神 大哥整理的代码吖。他有发过给我,也指导过我,可是还是不行...郁闷死了~~我现在是一相接高电平 ...

是不是正交解码和PWM 都用了相同的FTM模块?


作者: ♂ˇ邂逅√♀    时间: 2013-4-3 09:09
野火 发表于 2013-4-3 07:56
是不是正交解码和PWM 都用了相同的FTM模块?

不是噢。PWM用了FTM0,而两路测速分别用了FTM1和FTM2...

作者: liuxiagang    时间: 2013-6-3 12:45
♂ˇ邂逅√♀
你解决了,,现在帮帮我吧,,我的问题也是类同的啊,,你是怎么弄的,,详细的好嘛,谢谢。。谢谢。。
作者: liuxiagang    时间: 2013-6-3 12:50
呀哈哈,,,我刚发完自己再弄就解决了,,也是频率弄错了,也谢谢你们的提示哈。。。谢谢。。。
作者: 潜水一厮    时间: 2013-6-4 20:05
本帖最后由 潜水一厮 于 2013-6-4 20:08 编辑

肯定无法使用 UART的波特率是BUS时钟分出来的……你超频了 BUS时钟也变快了(目测UART1用的外部时钟?)




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2