搜索
bottom↓
回复: 13

使用luminary的lm3s8962,ssi与uart的都带fifo,以前没有使用,感觉怪怪的,总是感觉有问题

[复制链接]

出0入0汤圆

发表于 2010-3-6 21:21:11 | 显示全部楼层 |阅读模式
虽然可以减少中断次数,提高性能,但是操作上感觉很麻烦,uart采用中断发送和接收,有fifo确实也很方便,但是ssi,也带fifo,我不采用中断,fifo不可以设置,总是深度为8,还有若是每次发送一个数据,就停止发送,这个数据会不会发送不出去,还有只接收一个数据,又会怎么样?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-3-6 21:30:05 | 显示全部楼层
只发送一个数据会立即发送出去,有了fifo就允许当前的数据没发送完成就可以往ssi送新数据
接收到一个数据的话超过一定时间没有新数据进入就会有超时中断

出0入0汤圆

 楼主| 发表于 2010-3-6 21:38:22 | 显示全部楼层
有可能是心理作用吧,数据手册上写的比较含糊,我想知道当我把数据写入到ssidr后,ssidr在把数据交给发送fifo存储缓冲区,这里有一个写入指针,假如这个指针首先放在栈顶,当我不采用中断法的时候,其实我每次只写入一个数据,放在栈顶,若是上个数据已经发送出去,这个写入指针指向栈顶吗?若是还没有发送出去,再写入一个数据时,指针会不会向下指?

出0入0汤圆

发表于 2010-3-6 23:21:05 | 显示全部楼层
是呀 fifo真的让你很费解,书册也没办法说。我用uart做modbus通信着实让我头痛了好久,最后还是放弃用fifo了。大家有没有什么好的实现方法,指点一下,不胜感激。

出0入0汤圆

发表于 2010-3-7 09:12:52 | 显示全部楼层
感觉FIFO还是很好用的,举个例子说:

用UCOS,系统时钟周期是20ms,其中有一个任务是发送15个字节(9600bps)。

如果你不用fifo(查询fifo为空时候再放数),那么你发送15个字节需要将近15ms,用系统提供的CPU占用率的函数看一下,CPU占用时间必然在75%以上了。

如果你用fifo(查询fifo不满的时候就放),那么你可以一次性的就把这15个字节放进去,然后发送就是UART控制器自己的事情了,你的cpu不用在这里等着查了。cpu的占用率可以降低将近75%。

如果你关心功耗,你可以在空闲的时候切换到sleep或者deepsleep模式。cpu空闲时间越长功耗就可以做的越低。

出0入0汤圆

发表于 2010-3-7 10:56:59 | 显示全部楼层
回复【4楼】aaa1982
-----------------------------------------------------------------------
谢谢楼上的指点,我同意你对发送fifo说明,在modbus通信时可以把整个发送帧一次写到发送fifo里,可是接收时由于帧长度不定,中断后很多时候modbus帧还没有就收全。还有超时中断对rtu方式时的3.5T没法用,超时时间太短了。

出0入0汤圆

发表于 2010-3-7 11:11:11 | 显示全部楼层
我对集成fifo的外设控制器是这么理解的:

一般都会有一个寄存器,控制使能fifo以后中断触发的条件,比如说大于一半fifo被占用的时候触发接收中断,小于一半fifo被占用的时候触发发送中断。而且这些条件是可以调整的。(好像是从1/8一直到7/8)

当然,如果你不用中断模式驱动传输过程,也可也不考虑上面的关于中断触发时机的问题,直接查询fifo的相关标志位,也可以。

我认为fifo的作用就是增强相关外设控制器的功能,可以让他为cpu核心做更多的事情。

5楼提到的,modbus接收的问题。我对modbus不熟悉,但我认为fifo只是一种通信的方式。解决具体的问题还要考虑具体的程序编写。

出0入0汤圆

 楼主| 发表于 2010-3-8 10:02:27 | 显示全部楼层
增强性能是毋庸置疑的,产生疑惑是因为之前没有使用fifo,所以在操作细节上还有点疑问
我想只有多使用几次,也许你会喜欢上的,我在luminary的官方网站上的论坛里面,很少有人对fifo因为不理解而提问的

出0入0汤圆

发表于 2010-5-21 12:32:44 | 显示全部楼层
关注!

出0入0汤圆

发表于 2010-11-12 19:36:06 | 显示全部楼层
L3SMXXXX的SSI的FIFO能设置的吗?网上没见有人说可以,在数据手册也找不到,而且也不知道FIFO的指针的控制方法。有人用过SSI的中断吗?有用过的请指教

出0入0汤圆

发表于 2012-9-24 16:50:28 | 显示全部楼层
mark  学习了

出0入0汤圆

发表于 2012-12-14 20:30:54 | 显示全部楼层
最近想用ssi的中断接收数据,发送端数据已经发出来了,可接收端不知什么原因就是不进中断,求大神解答!!!

出0入0汤圆

发表于 2012-12-14 20:35:53 | 显示全部楼层
用习惯了FIFO,再用没有FIFO的UART,感觉太不爽了。
感觉就像是,用习惯了操作系统,突然再裸奔,也不适应。但是一直裸奔而没有用过系统的人,觉得裸奔挺好,操作系统没啥必要。呵呵

出0入0汤圆

发表于 2012-12-14 20:38:08 | 显示全部楼层
LM3S的SSI的FIFO你当他是透明好了,你如果写的字节不超过8(我忘了是不是这个数),你就连续写,写一个也行,数据自动输出。超过8,或者你用延时或者你查状态有空间在写新的数据
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 23:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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