S5PV210串行通信接口详解3

《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org


中断,也可以理解为异步通知你,


串口通信中,发送方一般不需要中断即可完成发送,

接收方必须使用中断来接收,否则数据就会丢失,

或者也可以采用轮巡的方式来接收数据,那这样的话,CPU岂不是专门来盯着接收数据了。


时钟中断的工作场景:发送方先设置好中断并绑定一个中断处理程序,

然后发送方丢一帧数据给transmitter,

transmitter发送耗费一段时间发送这帧数据,

这段时间CPU可以去做别的事情,

等transmitter发送完成后会产生一个TXD中断,

该中断会导致事先绑定的中断处理程序执行,

在中断处理程序中CPU会切换回来继续给transmitter放一帧数据,

然后CPU离开

。。。。。。


不使用中断的工作场景:发送方事先禁止中断,发送方的CPU给一帧数据到transmitter,

然后transmitter耗费一段时间来发送这帧数据,

这段时间CPU在这等着(CPU没有切换去做别的事情)

待我们发送方发送完成后,CPU再给它一帧数据继续发送直到所有数据发完,

CPU是怎么知道transmitter已经发送完了?

这里就有一个状态寄存器,状态寄存器中有一个位叫发送缓冲区空标志,

transmitter发送完成(发送缓冲区空了)就会给这个标志位置位,

CPU就是通过不断查询这个标志位为1还是0来指导发送是否已经完成的。


串口通信是异步的,发送方占主导权,接收方只有时刻等待才不会丢数据,

这个差异就使得发送方可以不使用中断,接收方不得不使用中断模式。


这里有两个时间要去区分下:一个是发送方发送数据时候消耗的时间,这个比较少,也浪费得起,

另一个时间是指,你不知道这个数据什么时候来,而等待的时间,这个时间可能短,也可能很长。


串口通信需要一个固定的波特率,因此transmitter和receiver都需要一个时钟信号,

时钟信号是从哪里来的呢?源时钟信号是从外部APB总线提供给串口模块的。

这里还涉及到一些寄存器以及相关的计算,在具体编程的时候再来看。

下面是一些寄存器的数据手册,




看这里算出来的是20.7,可以当20,也可以当21,但就怕不统一,比如当成20.5等,那么在这种情况下,速率越快,影响越大,所以需要下面的slot寄存器来辅助,












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值