polynesia 发表于 2012-6-3 16:25:02

请教各位大侠,小弟串口接收到数据却不是发送的

求救各位大侠 小弟最近在做飞思卡尔的摄像头 做一个串口程序发送图像
串口初始化
SCI0SR2=0X00;
SCI0BD=0x0138;
SCI0CR2=0X08;
SCI0CR1=0X00;
发送程序
if(k<254)
   {
   while(SCI0SR1_TC) {
    k++;
   SCI0DRL=k;
   delay();
但接收到的却很奇怪
例如 发送1 接收到的是7f
       发送2 接收到的是3f
       发送3 接受到的是7e
下面是发送1-k
接收到的hex值
7F 3F 7E 1F 7D 3E 7C 0F 7B 3D 7A 1E 79 3C 78 07 77 3B 76 1D 75 3A 74 0E 73 39 72 1C 71 38 70 03 6F 37 6E 1B 6D 36 6C 0D 6B 35 6A 1A 69 34 68 06 67 33 66 19 65 32 64 0C 63 31 62 18 61 30 60 01 5F 2F 5E 17 5D 2E 5C 0B 5B 2D 5A 16 59 2C 58 05 57 2B 56 15 55 2A 54 0A 53 29 52 14 51 28 50 02 4F 27 4E 13 4D 26 4C 09 4B 25 4A 12 49 24 48 04 47 23 46 11 45 22 44 08 43 21 42 10 41 20 40 00 3F 1F 3E 0F 3D 1E 3C 07 3B 1D 3A 0E 39 1C 38 03 37 1B 36 0D 35 1A 34 06 33 19 32 0C 31 18 30 01 2F 17 2E 0B 2D 16 2C 05 2B 15 2A 0A 29 14 28 02 27 13 26 09 25 12 24 04 23 11 22 08 21 10 20 00 1F 0F 1E 07 1D 0E 1C 03 1B 0D 1A 06 19 0C 18 01 17 0B 16 05 15 0A 14 02 13 09 12 04 11 08 10 00 0F 07 0E 03 0D 06 0C 01 0B 05 0A 02 09 04 08 00 07 03 06 01 05 02 04 00 03 01 02 00 01 00 00 00 7F 3F 7E 1F 7D 3E 7C 0F 7B 3D 7A 1E 79 3C 78 07 77 3B 76 1D 75 3A 74 0E 73 39 72 1C 71 38 70 03 6F 37 6E 1B 6D 36 6C 0D 6B 35 6A 1A 69 34 68 06 67 33 66 19 65 32 64 0C 63 31 62 18 61 30 60 01 5F 2F 5E 17 5D 2E 5C 0B 5B 2D 5A 16 59 2C 58 05 57 2B 56 15 55 2A 54 0A 53 29 52 14 51 28 50 02 4F 27 4E 13 4D 26 4C 09 4B 25 4A 12 49 24 48 04 47 23 46 11 45 22 44 08 43 21 42 10 41 20 40 00 3F 1F 3E 0F 3D 1E 3C 07 3B 1D 3A 0E 39 1C 38 03 37 1B 36 0D 35 1A 34 06 33 19 32 0C 31 18 30 01 2F 17 2E 0B 2D 16 2C 05 2B 15 2A 0A 29 14 28 02 27 13 26 09 25 12 24 04 23 11 22 08 21 10 20 00 1F 0F 1E 07 1D 0E 1C 03 1B 0D 1A 06 19 0C 18 01 17 0B 16 05 15 0A 14 02 13 09 12 04 11 08 10 00 0F 07 0E 03 0D 06 0C 01 0B 05 0A 02 09 04 08 00 07 03 06 01 05
求救 谢谢各位大侠了

gallle 发表于 2012-6-3 16:32:07

是不是波特率不匹配,修改一下接收的波特率试试

eblc1388 发表于 2012-6-3 16:41:47

先发那麽多字节有用吗?

倒不如先发一个特定字节(例如0x55),正确接收後才看看多字节发送。

polynesia 发表于 2012-6-3 16:42:30

gallle 发表于 2012-6-3 16:32 static/image/common/back.gif
是不是波特率不匹配,修改一下接收的波特率试试

波特率是9600 57600我也测试过 但是都不行

polynesia 发表于 2012-6-3 16:43:16

eblc1388 发表于 2012-6-3 16:41 static/image/common/back.gif
先发那麽多字节有用吗?

倒不如先发一个特定字节(例如0x55),正确接收後才看看多字节发送。 ...

我确实是发送单字节 但是比如说我只发送1 那么可以稳定的接收到7f这个值 很奇怪啊

polynesia 发表于 2012-6-3 16:44:23

大家好热心 谢谢

eblc1388 发表于 2012-6-3 16:48:52

发 0x55 及 0x33,看看接收诘果。

polynesia 发表于 2012-6-3 16:53:58

eblc1388 发表于 2012-6-3 16:48 static/image/common/back.gif
发 0x55 及 0x33,看看接收诘果。

0x55接收到是U 正确
0x33接收到是f正常应该是3

eblc1388 发表于 2012-6-3 17:06:03

本帖最后由 eblc1388 于 2012-6-3 17:12 编辑

"f "= 0 0110 0110 , 0x66 而
"3" =0 1100 1100 , 0x33

位元位移了但保持不变,可以判断为收/发双方波特率有相对比较大的误差。

但误差大也不可能第一位元都收错了,相信波特率可能有倍数的误差。

polynesia 发表于 2012-6-3 17:11:48

eblc1388 发表于 2012-6-3 17:06 static/image/common/back.gif
"f "= 0 0110 0110 , 0x66 而
"3" =0 1100 1100 , 0x33



难道还是波特率的问题 我在检查一下 谢谢

ayinuerswj 发表于 2013-5-17 15:32:26

polynesia 发表于 2012-6-3 17:11 static/image/common/back.gif
难道还是波特率的问题 我在检查一下 谢谢

同样遇到这个问题了,不知道楼主最后怎么解决的

YUZH282 发表于 2013-5-17 15:52:27

据经验,多数是波特率的问题,线路上的波形也看看吧
页: [1]
查看完整版本: 请教各位大侠,小弟串口接收到数据却不是发送的