Uart的发送数据的形式

2019-03-24 14:24发布

我今天在使用Uart进行接收中断实验,当收到数据后把收到的数据发送出去,通过串口调试助手观察。 1、使用后我的理解是由于TI的LM3S811具有FIFO功能,也就是说如果我设置为1/8时,那么发送数据必须是2字节才能发数据发送出来,如果设置为4/8时必须要大于4字节后才会发送数据。不知道这样的理解对不对? 2、如果我不要FIFO,禁止FIFO,是不是只要我发送数据,哪怕是只收到一个字节,那么也可以发送出来? 3、用库的方式如何禁止FIFO? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
Study_Stellaris
1楼-- · 2019-03-24 20:17
<

这个 FIFO 的作用其实主要是提高串口的效率,降低串口通讯对 CPU 的使用率。

1、使用后我的理解是由于TI的LM3S811具有FIFO功能,也就是说如果我设置为1/8时,那么发送数据必须是2字节才能发数据发送出来,如果设置为4/8时必须要大于4字节后才会发送数据。不知道这样的理解对不对?

    应该是只要放 FIFO 里边填充数据了,就会立刻启动发送。

2、如果我不要FIFO,禁止FIFO,是不是只要我发送数据,哪怕是只收到一个字节,那么也可以发送出来?

    禁用 FIFO 其实就是相当于将 FIFO 深度设置为 1 个字节。

3、用库的方式如何禁止FIFO?

     可以用 void UARTFIFODisable(unsigned long ulBase) 来禁止。

[ 本帖最后由 Study_Stellaris 于 2012-5-8 09:11 编辑 ]
brucege888
2楼-- · 2019-03-25 01:27
< :TI_MSP430_内容页_SA7 --> 设置为1/8的时候,意味着当FIFO里面的数据减少到2个时才触发中断,不是只有2个才能发送。只要有数据,uart就会立即发送的。
feiante
3楼-- · 2019-03-25 06:24
 精彩回答 2  元偷偷看……
brucege888
4楼-- · 2019-03-25 08:05
打开接收超时中断,就能触发中断了
Study_Stellaris
5楼-- · 2019-03-25 13:24
我是这样理解的:我们将数据流比作水流。 FIFO 就是中间的一个蓄水池。接收和发送有各自独立的 FIFO. 对于发送这端,如果我们设置 FIFO 为 50%,表示的意思就是当水池里的水低于 50% 的时候会产生中断,提示可以继续加大进水口。对于接收这端,如果我们设置 FIFO 为 50%,表示的意思就是如果水已经超过设定值 50% 会产生中断,提示要加大出水口,赶紧将数据读走,否则有溢出的情况发生。对于发送而言,高于 50% 会立即自动发送,但水池的水低于 50% 的时候,它不会立即发送,但是如果超过一定时间(好像是两个 Byte 的时间)他还是要发送的,否则里边的数据永远出不去。这应该就是超时中断。对于接收端,如果高于50% 肯定会产生中断,但低于 50% 呢,他应该也不会立即产生中断,他也没有必要马上产生中断,也会有个超时中断。
feiante
6楼-- · 2019-03-25 17:50
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章