|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| Uart 收发数据问题 急 急 急 |
| |
使用uart0_init(19200);进行uart口的初始化,当uart0_putstr("uart
OK!\n");时,用串口工具得到的是:1C FC 1C 00 1C 0E FF 1C 70 FF 1C 00 70 38 E0 8E
1C 8E 1C 80 E0 70 07 E0,这串数据不是uart OK的ascii 为什么?串口得到的数据是不是就是错的? 函数备注: void uart0_putstr(char *str) { while(*str!=0) uart0_putchar(*str++); } void uart0_putchar(char c) { //Wait until space is available in the FIFO while (!(MCF_UART0_USR&MCF_UART_USR_TXRDY)) { ; } //Send the character MCF_UART0_UTB = (char)c; } 望高手帮忙了!!!
于2012-02-10 00:00前回复此主题可获赠1积分。
此主题悬赏5积分[未解决]。
|
| | |
| |
|
相关主题
|
|
|
|
|
|
| |
头衔:管理员
积分:348 帖子:4583
精华:35 等级:工程员 注册时间:2009-04-22 最后登录:2012-05-25 |
|
| |
|
| RE:Uart 收发数据问题 急 急 急 |
| |
1、你的电路板和PC机之间串口连接,有连接232这种电平转换芯片吗? 2、RX和TX和PC机的RX、TX交叉连接了吗?RX-TX,TX-RX 3、PC机串口波特率和MCU的波特率是否一致? 4、如果上述几步没有问题,请问一下MCU系统时钟的频率是多少?
|
| | |
| |
|
站在ARM的平台上看DSP,我们还需要奋进。
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 2 楼 于2012-02-07 02:15:24发表: 1、你的电路板和PC机之间串口连接,有连接232这种电平转换芯片吗? 2、RX和TX和PC机的RX、TX交叉连接了吗?RX-TX,TX-RX 3、PC机串口波特率和MCU的波特率是否一致? 4、如果上述几步没有问题,请问一下MCU系统时钟的频率是多少? 谢谢你的快速回复! 1。板子和电脑之间使用串口线直接连接,板子主芯片和板子上的串口之间有芯片(ADM3202)连接。 2。直接使用的串口连接线。 3。MCU的波特率怎么看? 是这个宏定义吗?? #define TERMINAL_BAUD 19200 #define
UART_BAUD TERMINAL_BAUD /*
115200*/ 4。#define SYSTEM_CLOCK 80 /* system bus
frequency in MHz */ 芯片是MCF52258。
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 3 楼 于2012-02-07 02:33:13发表: 串口助手那里 你是不是点击16进制显示了啊 是数据不正确。串口助手里选择ASCII就显示乱码或者不显示。
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 2 楼 于2012-02-07 02:15:24发表: 1、你的电路板和PC机之间串口连接,有连接232这种电平转换芯片吗? 2、RX和TX和PC机的RX、TX交叉连接了吗?RX-TX,TX-RX 3、PC机串口波特率和MCU的波特率是否一致? 4、如果上述几步没有问题,请问一下MCU系统时钟的频率是多少? 看电路图,得知主芯片上的TXD0,通过ADM3202ARN后,连接到了板子上串口的pin2( 接收数据 (RXD)),说明第二个问题是正确的,对吗?
就是我的板子上实现了交叉连接,然后用9针串口线连接到PC机器上,这样有哪里还是错误的,请你指出,谢谢!!
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 5 楼 于2012-02-07 03:24:57发表: 回复第 3 楼 于2012-02-07 02:33:13发表: 串口助手那里 你是不是点击16进制显示了啊 是数据不正确。串口助手里选择ASCII就显示乱码或者不显示。 你没用mqx 是吧 你看看自己设置寄存器的时候 波特率 是多少啊,多数默认是115200 没有奇偶校验 一个停止位 再就是 好像系统时钟 跟波特率 没大关系。。。。你设置是多大波特率 就是多大 系统时钟变了
他也会自动还是115200 的 自己试试吧 乱的话 有可能是 波特率 刚开始我以为你 16进制显示呢 你用的是 demo板子 还是 自己焊接的 啊 如果自己焊接的话
检查下硬件电路 用示波器 也可以看数据的 看看电压 有问题吗 应该多数是程序
问题 我的小意见。。。呵呵 
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 7 楼 于2012-02-07 03:26:01发表: 回复第 5 楼 于2012-02-07 03:24:57发表: 回复第 3 楼 于2012-02-07 02:33:13发表: 串口助手那里 你是不是点击16进制显示了啊 是数据不正确。串口助手里选择ASCII就显示乱码或者不显示。 你没用mqx 是吧 你看看自己设置寄存器的时候 波特率 是多少啊,多数默认是115200 没有奇偶校验 一个停止位 再就是 好像系统时钟 跟波特率 没大关系。。。。你设置是多大波特率 就是多大 系统时钟变了
他也会自动还是115200 的 自己试试吧 乱的话 有可能是 波特率 刚开始我以为你 16进制显示呢 你用的是 demo板子 还是 自己焊接的 啊 如果自己焊接的话
检查下硬件电路 用示波器 也可以看数据的 看看电压 有问题吗 应该多数是程序
问题 我的小意见。。。呵呵  非常感谢你的建议!! 我还没有用MQX,你有串口的例子吗??可以发给我看看吗??刚开始接触这些,总是遇到很多问题,谢谢你的帮助!!
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
这个真没有。。。我都是用mqx的 里面都是写好的 不需要一个个配置的 你仔细找找别人可能也有写的 有什么的不清楚的 你再问我 qq673299711 
|
| | |
| |
|
|
|
|
|
|
|
| |
头衔:管理员
积分:348 帖子:4583
精华:35 等级:工程员 注册时间:2009-04-22 最后登录:2012-05-25 |
|
| |
|
| RE:Uart 收发数据问题 急 急 急 |
| |
你还是把工程发出来吧。这样好找问题。我也可以帮你测试一下。
|
| | |
| |
|
站在ARM的平台上看DSP,我们还需要奋进。
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 10 楼 于2012-02-08 01:52:51发表: 你还是把工程发出来吧。这样好找问题。我也可以帮你测试一下。 附件中是代码,你帮我测试下!谢谢安版主!!
附件:请先登陆查看附件!
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 10 楼 于2012-02-08 01:52:51发表: 你还是把工程发出来吧。这样好找问题。我也可以帮你测试一下。 我用的板子是我们硬件工程师参考MCF52259 evb版自己焊接的,使用的芯片是MCF52258,系统时钟频率是80Mhz。
|
| | |
| |
|
|
|
|
|
|
|
| |
头衔:管理员
积分:348 帖子:4583
精华:35 等级:工程员 注册时间:2009-04-22 最后登录:2012-05-25 |
|
| |
|
| RE:Uart 收发数据问题 急 急 急 |
| |
1、外部晶振是多大? 2、我看不到你的main函数,你怎么调用的? 3、有2种肯那个,系统时钟不正确,IO口配置不正确。
|
| | |
| |
|
站在ARM的平台上看DSP,我们还需要奋进。
|
|
|
|
|
|
| |
头衔:管理员
积分:348 帖子:4583
精华:35 等级:工程员 注册时间:2009-04-22 最后登录:2012-05-25 |
|
| |
|
| RE:Uart 收发数据问题 急 急 急 |
| |
你应该调用这个函数: uart_init (int uartch, int sysclk, int baud) 在uart.h里面。
|
| | |
| |
|
站在ARM的平台上看DSP,我们还需要奋进。
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 13 楼 于2012-02-09 09:03:03发表: 1、外部晶振是多大? 2、我看不到你的main函数,你怎么调用的? 3、有2种肯那个,系统时钟不正确,IO口配置不正确。 main函数在\src\projects\example位置里面。 外部晶振是48MHz
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 14 楼 于2012-02-09 09:07:12发表: 你应该调用这个函数: uart_init (int uartch, int sysclk, int baud) 在uart.h里面。 还有个问题,想问下你, 主芯片上的外部晶振,是48M的,为什么我用示波器量不出来,需要在软件哪里去设置时钟?
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 16 楼 于2012-02-09 09:13:24发表: 回复第 14 楼 于2012-02-09 09:07:12发表: 你应该调用这个函数: uart_init (int uartch, int sysclk, int baud) 在uart.h里面。 还有个问题,想问下你, 主芯片上的外部晶振,是48M的,为什么我用示波器量不出来,需要在软件哪里去设置时钟? 你看下你的这个芯片资料 他的波特率的设置 和系统时钟有没有关系 这还看不出来吗 你想要系统时钟设置的话 我给你哥函数 这个是mqx下 写好的时钟初始化 函数 只需要你改数值 而且告诉你怎么去改了
附件:请先登陆查看附件!
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 13 楼 于2012-02-09 09:03:03发表: 1、外部晶振是多大? 2、我看不到你的main函数,你怎么调用的? 3、有2种肯那个,系统时钟不正确,IO口配置不正确。 外部晶振为48Mhz, 如果在程序的初始化mcf5225x_init函数中不进行pll的初始化,晶振不振. 如果添加了pll初始化,函数如下: void mcf5225x_pll_init(void) { MCF_CLOCK_OCLR = 0xC0; //turn
on crystal MCF_CLOCK_CCLR = 0x00;
//switch to crystal MCF_CLOCK_OCHR = 0x00; //turn
off relaxation osc /* The PLL pre divider - 48MHz / 6 =
8MHz */ MCF_CLOCK_CCHR =0x05; MCF_CLOCK_SYNCR &= ~(MCF_CLOCK_SYNCR_PLLEN); MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_CLKSRC |
MCF_CLOCK_SYNCR_PLLMODE; //这里对8M*10=80Mhz MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_MFD(3) |
MCF_CLOCK_SYNCR_RFD(0); MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_PLLEN; while (!(MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_LOCK)) { } } 为什么我从48M晶振两侧量出来的是16Mhz呢? 请帮我看下,哪里出现问题了? 谢谢...
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
。。。。。。。。。。。。。。这个从何说起呢 我给你的这个写好的肯定是对的 只要不超出多余80M 都是正常工作的 至于你说的测出不对 第一 你别看原理图 你看你实际的板子是不是48M的 第二 是不是测错了啊,,,,,, 第三 我就蒙圈了,,,  最后 你这都不是你串口数据的问题
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 19 楼 于2012-02-10 04:24:34发表: 。。。。。。。。。。。。。。这个从何说起呢 我给你的这个写好的肯定是对的 只要不超出多余80M 都是正常工作的 至于你说的测出不对 第一 你别看原理图 你看你实际的板子是不是48M的 第二 是不是测错了啊,,,,,, 第三 我就蒙圈了,,,  最后 你这都不是你串口数据的问题 嘿嘿,上面安版主又说起到,串口数据不对,系统时钟可能存在问题! 我板子上的晶振就是48MHz的,只是我现在用pll将系统时钟调到了80Mhz,按照我刚才提供的代码,我不知道是否是正确的? 我如何验证是否将core调到了80Mhz、??
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 17 楼 于2012-02-09 10:59:34发表: 回复第 16 楼 于2012-02-09 09:13:24发表: 回复第 14 楼 于2012-02-09 09:07:12发表: 你应该调用这个函数: uart_init (int uartch, int sysclk, int baud) 在uart.h里面。 还有个问题,想问下你, 主芯片上的外部晶振,是48M的,为什么我用示波器量不出来,需要在软件哪里去设置时钟? 你看下你的这个芯片资料 他的波特率的设置 和系统时钟有没有关系 这还看不出来吗 你想要系统时钟设置的话 我给你哥函数 这个是mqx下 写好的时钟初始化 函数 只需要你改数值 而且告诉你怎么去改了 压缩包里面就一个.h文件,没有其他文件了吗?
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:341 帖子:132
精华:0 等级:工程员 注册时间:2011-12-06 最后登录:2012-05-23 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
你不就要时钟设置的吗 ,,,,无语了 有事qq说 在这不太方便 
|
| | |
| |
|
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 14 楼 于2012-02-09 09:07:12发表: 你应该调用这个函数: uart_init (int uartch, int sysclk, int baud) 在uart.h里面。 安版主,我的工程有没有进展啊? 系统时钟和波特率 自己认为都没有设置错误 从示波器上看到发出数据波形 就是错误的数据
|
| | |
| |
|
|
|
|
|
|
|
| |
头衔:管理员
积分:348 帖子:4583
精华:35 等级:工程员 注册时间:2009-04-22 最后登录:2012-05-25 |
|
| |
|
| RE:Uart 收发数据问题 急 急 急 |
| |
我看了你的程序了,你的程序中并没有初始化过时钟,那么默认是时钟可能是48MHz,你仿真的时候,可以在debug选项下面选择查看时钟,就能查看到当前时钟,或者通过仿真的command窗口,在开始仿真的时候会输出时钟频率。
|
| | |
| |
|
站在ARM的平台上看DSP,我们还需要奋进。
|
|
|
|
|
|
| |
积分:9 帖子:77
精华:0 等级:学徒 注册时间:2011-12-28 最后登录:2012-05-24 |
|
| |
|
| 回复:Uart 收发数据问题 急 急 急 |
| |
回复第 24 楼 于2012-02-14 03:30:58发表: 我看了你的程序了,你的程序中并没有初始化过时钟,那么默认是时钟可能是48MHz,你仿真的时候,可以在debug选项下面选择查看时钟,就能查看到当前时钟,或者通过仿真的command窗口,在开始仿真的时候会输出时钟频率。 安老大,由于我的工具调试有问题,我就采取了其他的方法(DMA
timer看pin脚电平的时间)获得当前时钟频率,得到的不是80MHZ,也不是48Mhz,而是27Mhz左右(另:直接测量芯片管脚43,clockout,得到的也是27Mhz),在软件中我用pll将频率拉升至80Mhz的,代码和referencemanual中讲的一致,为什么频率会出现27Mhz,我很疑惑,不知道是什么原因? void mcf5225x_pll_init(void) { MCF_CLOCK_OCLR = 0xC0; //turn on
crystal //0xF0 MCF_CLOCK_CCLR = 0x00; //switch to crystal MCF_CLOCK_OCHR = 0x00; //turn off
relaxation osc /* The PLL pre divider - 48MHz / 6 = 8MHz */ MCF_CLOCK_CCHR =0x05; /* Multiply 48Mhz reference crystal /CCHR by 10 to acheive
system clock of 80Mhz */ MCF_CLOCK_SYNCR &= ~(MCF_CLOCK_SYNCR_PLLEN); MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_CLKSRC |
MCF_CLOCK_SYNCR_PLLMODE; //80 MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_MFD(3) |
MCF_CLOCK_SYNCR_RFD(0); MCF_CLOCK_SYNCR |= MCF_CLOCK_SYNCR_PLLEN; while (!(MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_LOCK)) { } }
|
| | |
| |
|
|
|