查看: 2094|回复: 7

[求助] 请教KL系列的LPSCI的查询接收问题

[复制链接]

该用户从未签到

5

主题

19

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-4-5
发表于 2016-1-26 10:48:33 | 显示全部楼层 |阅读模式
本帖最后由 kojidong 于 2016-1-26 10:50 编辑

示例代码中有三种接收,lpsci_blocking、lpsci_non_blocking、lpsci_polling
我用的是lpsci_blocking,我想实现接收一帧22字节固定长的数据,希望能处理异常接收,如:不足22字节的接收,继续等待直至接收满22个字节;如果多出22个字节,希望能丢弃22字节后的数据。
我的代码如下,连续有两次接收:
  1. 1  while(kStatus_LPSCI_Success != LPSCI_DRV_ReceiveDataBlocking(BOARD_DEBUG_UART_INSTANCE, cmdB, sizeof(cmdB), 100u));
  2. 2  cmdB, sizeof(cmdB), 100u));        /* 打印接收到的数据 */
  3. 3  ……
  4. 4  while(kStatus_LPSCI_Success != LPSCI_DRV_ReceiveDataBlocking(BOARD_DEBUG_UART_INSTANCE, cmdB, sizeof(cmdB), 100u));
  5. 5  cmdB, sizeof(cmdB), 100u));        /* 打印接收到的数据 */
复制代码



现在出现一个问题:在第一次接收时,如果接收到超过22字节的数据后,发现多余的字节会进入第二次接收的接收缓冲区,即没有将多余的字节丢弃掉,请问如何才能将每次接收多余的字节丢弃掉?


我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2016-1-26 17:15:23 | 显示全部楼层
请问楼主使用的MCU型号是多少?
库代码是来自KSDK 吗?
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

19

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-4-5
 楼主| 发表于 2016-1-27 09:36:40 | 显示全部楼层
FSL_TICS_ZP 发表于 2016-1-26 17:15
请问楼主使用的MCU型号是多少?
库代码是来自KSDK 吗?

MCU型号:MKL02Z32VFM4

用的是KSDK_1.2.0
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2016-1-27 13:57:37 | 显示全部楼层
你可以在收到目标大小的数据后,采用如下函数LPSCI_DRV_AbortReceivingData,停止继续接收数据了
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

19

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-4-5
 楼主| 发表于 2016-1-29 14:45:02 | 显示全部楼层
FSL_TICS_ZP 发表于 2016-1-27 13:57
你可以在收到目标大小的数据后,采用如下函数LPSCI_DRV_AbortReceivingData,停止继续接收数据了 ...

如何使用呢,我如下加了后,仍然起不到作用
  1. while(kStatus_LPSCI_Success != LPSCI_DRV_ReceiveDataBlocking(BOARD_DEBUG_UART_INSTANCE, cmdB, sizeof(cmdB), 1000u));
  2.         LPSCI_DRV_AbortReceivingData(BOARD_DEBUG_UART_INSTANCE);
复制代码


回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

19

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-4-5
 楼主| 发表于 2016-1-29 17:33:25 | 显示全部楼层
这个查询接收的例程里怎么没有给出缓冲区有数据时哪个寄存器标志会置位?
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2016-2-1 16:29:03 | 显示全部楼层
kojidong 发表于 2016-1-29 17:33
这个查询接收的例程里怎么没有给出缓冲区有数据时哪个寄存器标志会置位? ...

缓存区域是定义好的数组,跟寄存器的标志位没有关系
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

19

帖子

0

注册会员

Rank: 2

积分
73
最后登录
2016-4-5
 楼主| 发表于 2016-2-2 09:48:43 | 显示全部楼层
FSL_TICS_ZP 发表于 2016-2-1 16:29
缓存区域是定义好的数组,跟寄存器的标志位没有关系

现在的问题是,我在这调用这个函数时,我希望等到接收缓冲区有数据时再调用接收函数,如果没有相关寄存器标题置位,不论有没有数据只有直接调用这个函数了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 19:52 , Processed in 0.101912 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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