串口uart输出乱码怎么解决?

conlin_hongwei 2012-12-10 01:37:07
uart输出乱码:
平台:恩智浦EM773-->cortex-m0即arm7的处理器,有数据手册的;
uart:裸机下的uart驱动,但老是输出乱码

波特率,数据位,停止位,校验位等都检查了;系统核心时钟,波特率也降低了;结果还是一样乱码
望请大侠帮忙:

这个是串口配置:uart_config_t config = {RATE_19200_BAUD, BITS_8, BITS_1, NO_PARITY};
串口写函数:
/**********************************************************************************************************
* Ser_Write()
*
* Description : Write data to a serial port.
*
* Argument(s) : pdata Pointer to data to write
* : count Number of bytes (characters) to write
*
* Return(s) : none.
**********************************************************************************************************/

void Ser_Write(uint8_t *pdata, uint16_t count)
{
uint8_t TxData = *pdata++;

if (count > 0)
{
count--; /* sent the first char out here, the rest is done by ISR */
rtk_sem_acquire(UART_TxBusySem); /* Wait until Uart is free */
UART_TxPdata = pdata;
UART_TxCount = count;
UART->THR = TxData; /* sent first character */
UART->IER |= IER_THRE; /* Enable THRE interrupt */
rtk_sem_acquire(UART_TxReadySem); /* Wait until TX complete */
rtk_sem_release(UART_TxBusySem);
}
}
...全文
4442 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
HuaiShuShuV 2012-12-28
  • 打赏
  • 举报
回复
引用 13 楼 hongweilinux 的回复:
谢谢各位的建议,问题查出来了;是TTL电平问题,开发板的TTL电平是3伏,但是我用的是USB转串口的5V,所以不管怎么弄都会是乱码,换用232电平转换芯片就可以了
我擦
conlin_hongwei 2012-12-28
  • 打赏
  • 举报
回复
谢谢各位的建议,问题查出来了;是TTL电平问题,开发板的TTL电平是3伏,但是我用的是USB转串口的5V,所以不管怎么弄都会是乱码,换用232电平转换芯片就可以了
HuaiShuShuV 2012-12-18
  • 打赏
  • 举报
回复
你看看显示设置,有可能是HEX和文字的显示没有设置对也会出现乱码
Binzo 2012-12-15
  • 打赏
  • 举报
回复
引用
uint8_t TxData = *pdata++;
要知道*的优先级是大于++的, (*pdata)++;
1586874907 2012-12-14
  • 打赏
  • 举报
回复
应该是波特率有问题,可用示波器确认一下
zhujinqiang 2012-12-12
  • 打赏
  • 举报
回复
乱码?发送接收编码格式一样吗?是用ASCII?16进制?
诶呦 2012-12-12
  • 打赏
  • 举报
回复
目测——波特率问题
摩斯电码 2012-12-12
  • 打赏
  • 举报
回复
有可能是复用的问题吗?
zhujinqiang 2012-12-12
  • 打赏
  • 举报
回复
恩,楼上几位都说是波特率。
fish_linux 2012-12-12
  • 打赏
  • 举报
回复
波特率不正确(主要原因是时钟配置不对)可能导致乱码的现象!
lr2131 2012-12-11
  • 打赏
  • 举报
回复
昨天刚解决了uart通信的问题,建议楼主一步一步的查问题根源。先把通信双方的RX和TX短接,做回环测试,可以先验证本身程序的逻辑问题。如果其中一方是PC的话或者是Linux系统的话,可以下个串口调试工具,先用这个程序和ARM对接,看硬件和下位机的设置有问题没有。最后才是你的程序和ARM通信。一步一步的查,缩小问题的范围,一定能找到问题的。串口通信的问题基本都可以像这么来查,是个较通用的方法。
流水恋歌 2012-12-11
  • 打赏
  • 举报
回复
如果波特率太大也会出现乱码
falloutmx 2012-12-10
  • 打赏
  • 举报
回复
量波形,看脉宽和比特位对不对
conlin_hongwei 2012-12-10
  • 打赏
  • 举报
回复
请大侠帮忙啊,在线等急啊

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧