社区
嵌入开发(WinCE)
帖子详情
WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗?
xqhrs232
2009-10-23 10:04:21
WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗?
...全文
120
15
打赏
收藏
WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗?
WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenangel1113
2011-03-29
打赏
举报
回复
SFR是什么?
shellgo
2010-03-06
打赏
举报
回复
问一下楼主,现在有没有解决spi丢数据的问题的
xqhrs232
2009-10-29
打赏
举报
回复
500khz都会丢数据!怪怪!难道中断接收真的处理不过来?
xqhrs232
2009-10-29
打赏
举报
回复
SPI通信线太长?SPI通信信号线不稳定有干扰?觉得都不大可能是!
xqhrs232
2009-10-28
打赏
举报
回复
今天拿两台ARM+WINCE的设备试了一下,真的会丢数据啊!10帧1K的数据就有1-2帧收不完全.SPI频率还只是跑到了5.54MHZ,中断方式真的处理不过来?应该不存在SPI数据没发出的现象?!
gelu1040
2009-10-27
打赏
举报
回复
SPI没有所谓的忙不过来
wohuazhen
2009-10-26
打赏
举报
回复
呵呵。这个还是要靠自己慢慢找。
xqhrs232
2009-10-26
打赏
举报
回复
有逻辑分析仪就好了,就可以勾几K的数据看看发送丢不丢数据.
skynet000
2009-10-26
打赏
举报
回复
如果怀疑发送的问题,
你就重复传一个包,然后用示波器测测看。是否有数据丢失!
xqhrs232
2009-10-26
打赏
举报
回复
顶起来一下
xqhrs232
2009-10-24
打赏
举报
回复
直接把fifo清掉???
没有这样的操作啊!FIFO在软件层面是清不到的,FIFO是底层固件接口.FIFO满了就会产生什么RXRDY信号,请求CPU来处理.FIFO的实现应该是什么LSI/VLSI来实现的.
FIFO这样的器件是由硬件决定的,是固定大小的,像我的SPI的FIFO就是64个字节的大小.
//=========
漏数据也不是完全的,有时候还是可以接到一个完整的包的,并且对应的校验和也是对的.觉得接收应该是没有问题,不知道问题是不是出在MCU发送那端,问题确定不了很烦.
skynet000
2009-10-24
打赏
举报
回复
用中断方式是可以处理的过来。你可以把fifo的长度设置长一些比如用64。然后触发中断设置为48.
不要相等。试试看。
7个字节也可以的,应该不会有漏数据的现象。我觉得你是不是每次接收数据就把FIFO给清掉的原因造成。比如说FIFO接到7个就通知中断处理了,然后FIFO还会继续接收后面的字节。但是你中断接完7个字节,就直接把fifo清掉了。后面几个字节可能就丢失了。
其实用DMA的方式跟中断也一样。等FIFO满了,直接从总线传到Memory,不用通过CPU来转。速度快一些。触发的原理还是跟中断一样的。
xqhrs232
2009-10-23
打赏
举报
回复
DMA接收方式必须先知道要接收多少个数据,当指定的数据个数接收完成才触发DMA中断产生什么的.但我的系统DMA接收的数据个数是变化的,不好指定DMA接收的数据个数啊!这样整的我的系统不知道该怎么去用DMA工作方式.
xqhrs232
2009-10-23
打赏
举报
回复
按道理我的SPI的FIFO有64个字节,有了FIFO就应该可以接到高速系统里面去.FIFO的存在就是为了协调系统总线跟外围总线的速度不一致而存在的.FIFO满了才请求CPU来处理(进行读取),CPU处理的速度是用的系统总线的频率,应该很快的,SPI数据的接收(一位位数据的移入跑的是外围总线,速度应该是更慢一点的).难道有了FIFO还是处理不过来?还是不能协调系统总线跟外围总线?(丢数据/漏数据现象严重)应该不至于吧?谁给讲讲这方面的理论啊!!!难道有了FIFO还得去用DMA方式?
不过我目前的接收触发中断的水平是设置为接收到7个字节就触发中断,没有设置为64个字节,FIFO的功能没有全部用到.
xqhrs232
2009-10-23
打赏
举报
回复
谁解决过这种高速接收的问题?我的SPI有64个FIFO按道理应该可以协调外围总线跟系统总线了.但为什么我的SPI接收丢数据/漏数据很严重
单片机 串口
采用
中断
服务收发数据
下图中左边的单片机用串口
接收
数据,用C语言编程,实现将
接收
的数值送到数码管进行实时显示(
接收
数据范围为0~9)。 (1) 已知晶振频率=11.0592MHz; (2) 要求配置串口
工作
在异步
方式
,8位数据位,波特率=2400; (3)
必须
用
中断
服务程序对
接收
数据进行
处理
并驱动显示,主程序中的后台循环while应为空。 //发送 #include <reg51.h> sbit button =P1^0; void delay(unsigned int n); char cnt
sfr
与sbit的理解,及单片机
中断
sfr
(special function register)定义的变量是将单片机的特殊功能寄存器赋值给一个变量,在程序设计中就能引用这个寄存器。 sbit 是对寄存器进行位操作,可对寄存器中某位置1或者清0. STC 图中这么多特殊功能寄存器之后可能会产生一些困扰,我们用
sfr
P0 = 0×80表示P0,用
sfr
SP = 0×81表示SP,这个没有歧义。有困扰的是:假如用sb
STC15系列单片机
SPI
使用教程(二)
硬件
SPI
(
中断
方式
) 以STC15W408AS单片机为例 一、硬件接线 STC15系列单片机
SPI
使用注意事项(一) 二、程序编写 1、和
SPI
中断
相关的寄存器 ① IE寄存器 ② IE2寄存器 ③ IP2寄存器 2、自定义寄存器,数据类型重定义
sfr
P_SW1 = 0xA2; //外设功能切换寄存器1
sfr
SPSTAT = 0xCD; //
SPI
状态寄存器
sfr
SPCTL = 0xCE; //
SPI
控制寄存器
sfr
SPDAT = 0xCF; //
SPI
51单片机特殊功能寄存器(
SFR
)介绍
1、21个寄存器介绍 51系列单片机内部主要有四大功能模块,分别是I/O口模块、
中断
模块、定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图: 图1 51单片机结构和功能图 51单片机掌握的好坏,其实就是能否正确操作这四个功能模块,而其操作的实质则又是能否对每个模块所对应寄存器的正确操纵。所以下面重点介绍一下51系列单片机内部的特殊功能寄存器(简称
SFR
...
MCS-5
中断
技术(理论)
内容概要 本章介绍MCS-51片内
中断
系统的硬件结构和
工作
原理。 7.1.1 MCS-51
中断
技术概述 在单片机系统中,
中断
技术主要用于实时监测与控制,也就是要求单片机能及时地响应
中断
请求源提出的服务请求,并作出快速响应并及时
处理
。这些
工作
就是由单片机片内的
中断
系统来实现的。下图显示了单片机对外围设备
中断
服务请求的整个
中断
响应和
处理
过程。 7.1.2 MCS-51
中断
系统结构
中断
系统结构如图7-2所示。共有5个
中断
请求源(简称
中断
源),2个
中断
优先级,可实现2级
中断
服务程序嵌套。每一
中断
源可用软件独立地
嵌入开发(WinCE)
19,498
社区成员
41,565
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章