OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3983|回复: 7

访问FALSH会多数据

[复制链接]

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
发表于 2014-11-23 23:04:14 | 显示全部楼层 |阅读模式
5金钱
*(u8 *)(0x8030080)
0x8030080我给里面写入了我接收到数据的长度,我用串口5发送USART_SendData(UART5,*(u8 *)(0x8030080));输出的数据是08,是对的
但是我用USART_SendData(UART4,*(u8 *)(0x8030080)); 发送,我接收到的是 08 20 08,屏蔽掉这句,数据就都是对的。
并且我用了校验,每发送一位,异或校验一次,校验码的结果是没有20 08的话,就是对的。但是我发送出去的数据就会多20 08这两位。
 
还有一个现象,我这边显示发送的数据比如 是正确的是 01  02 03...00 08 ......   结果我发送出去的是 01 02 03..... 00 08 20 08..... 我把这数据发送到TCP服务器端,但是服务器收到的就没00 08 20 08这几个数据。
只有前后正确的数据。

但是其他地方我也是这么发送的,都是对的,就在这个地方发送是有错误的。 并且我把FLASH模拟的EEPROM地址换了之后,我改到0x8020080,也是一样的结果 会多 20 08这两位,会发送出去00 08 20 08 服务器端,前后数据都有,就没这几个。。 
原子哥,这是什么个情况呢?


最佳答案

查看完整内容[请看2#楼]

回复【4楼】styleno1: --------------------------------- 问题我解决了,但是我没有彻底解决。因为我换了一种方法解决的。 我给那个数据加了0x00,然后再发送,就对了。但是我也不知道为什么。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
 楼主| 发表于 2014-11-23 23:04:15 | 显示全部楼层
回复【4楼】styleno1:
---------------------------------
问题我解决了,但是我没有彻底解决。因为我换了一种方法解决的。
我给那个数据加了0x00,然后再发送,就对了。但是我也不知道为什么。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-23 23:29:34 | 显示全部楼层
USART_SendData,每次只能发1个字节,不知道如何能发3个字节的???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
 楼主| 发表于 2014-11-24 08:22:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
但是确实出去了3个字节,我刚刚把发送的倒了一个串口,从串口5发送,结果数据是对的,发送的数据跟我想的一样。但是换到串口4,就又出现多几个字节了。
7E 01 02 00 08 (20 08 )01 55 78 36 98 72 32 33 34 35 36 37 38 39 F3 7E   括号外面的是我想发的数据,但是括号里面的那俩多余的也会发送出来。最奇葩的是我服务器端收到的
7E 01 02                        01 55 78 36 98 72 32 33 34 35 36 37 38 39 F3 7E  就没有中间的00 08 20 08了。。
我注释掉for(i=0;i<1;i++)
{
Aut_Cck^=*(u8 *)(0x8030080 + i*2);
// USART_SendData(UART4,*(u8 *)(0x8030080+ i*2));
}
所有数据就都是对的了。
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-11-24 10:58:11 | 显示全部楼层
数量不对,先检查波特率
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
 楼主| 发表于 2014-12-1 08:56:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥,我的问题又出现了,但是问题原因貌似我发现了,就是数据中只有出现用USART_SendData这个函数发送数据 08  就会出现 08 20 08这三个数据。
我的USART_SendData函数原型如下:
void USART_SendData(USART_TypeDef* USARTx, u16 Data)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_DATA(Data)); 
    
  /* Transmit Data */
  USARTx->DR = (Data & (u16)0x01FF);
   while (!(USARTx->SR & USART_FLAG_TXE));
}

会不会是这里出现问题了?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-1 15:36:57 | 显示全部楼层
回复【6楼】fly0000:
---------------------------------
这是库函数吧?
大把人用的,应该不存在这个低级问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
 楼主| 发表于 2014-12-1 16:49:49 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
是我的个人问题,那个GSM模块不识别0x08。。。没仔细看数据手册。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 14:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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