串口通信协议总结篇

同步、异步 总的来说具体就是看时钟线、
clk,又涉及到时钟线的知识,总的clk来自总线上面、这个又来自晶振器,和+

然后来到分配器。有ahp1和2两条线,就是用来挂外设的,不同的外设类型、协议、硬件又是不同的口子兼容,这些在stm32厂家生产的时候就设置好,但为了gpio口引脚冲突所以有重映射概念、

设置有分配器、接到两条线、接着是被频器,如果有其他设备需要更高的频率也可以使用。

好接着回到主体,刚才的时钟线是为了阐述同步和异步的区别,另外还涉及到传输速率的,同步的话速率更高,异步更慢。

中断的概念:nvic  中断向量嵌套处理器
中断分为外部中断、dma、各种协议嵌套着中断在里面、通道分为各自设置、两组 规则组和注入组  我们用到的大多是注入组    软件中断 硬件中断、 事件响应——nvic----cpu---读取执行、

还有中断中再嵌套中断,就好像while循环里面嵌套更多的嵌套循环、

不同的优先处理程序,中断就好像是突发事件、这时候就需要中断出来保护现场,进入处理中断,这个时候要中断处理结束以后再继续处理程序,

又分为 抢占优先级、响应优先级、这个可以设置,具体是低位先响应还是高位先响应,

涉及传输还有adc和dma也一起总结了,、数模转换·是dac,就是数字信号和模拟信号相互转换的过程、然后设置的话也是先要设置好端口,时钟的响应:  具体是在这个过程之中配置adc通过结构体传递参数、采样通道、结构、

adc:采样、量化、编码、处理

采集频率应当足够高:有一个法则是==2n;

就是12次逼近这个真实的模拟数据、

dma直接存储:可以不使用cpu的内存直接在stm32外设中

相互转换传递数据、之前学习的列子是通过adc采样:采集地址,存放在哪里,是不是连续采样、是软件触发还是硬件,

使用温度、光敏、红外线、测量对应所处的电阻值、得到的电压值,

首先是设置好对于外设、adc的配置参数、地址、gpio端口读取这个值,然后是
dma转运、装运的地址,这里是通过定义一个寄存器的一个数组值,三组,每次采样过后通过dma

转运到寄存器内我们定义的这个数组的值、通过led在显示出来我们这一组值

这里没有涉及到中断,因为都是连续转运,每次读好数据,adc将模拟信号转换为数字信号,这里有三组数据,所以是三个通道、直接转运到对应的寄存器里。

之前学习的adc加dma转运,

isp、i2c、ustar、can、

接下来是Isp:

四根线、这个传输速率最快、但是它对应有四根线:tx、rx、miso、Misi\

默认是一主多从,但是从机也可以作为主机使用,因为主机也会有作为从机时候的地址

ss默认是高电平,将要发起通话时会将被呼机的ss点平拉低,另外,主机上面有3+n条线,这里具体看有多少从机了,misi miso上都是还有clk连在一起 大但是ss线的话、每个从机都有一个自己的ss线、 ss线拉低以后从机就知道主机在呼叫自己,然后因为所有的miso、misi线是连在一起,因为传输和物理结构的原因、miso这边是默认置高电平的/

时序的呼叫时机选择,有四个模式,0123、主要使用的是0模式,分为,发送和接受,因为是miso和misi实质上 是misi和miso在相互传递的过程,这里比如a地址是0x23,我们使用isp向a发送了0x45,那么miso这边实质上是会接受到0x23,a地址会变成0x45,实质是数据在交换,那么这又涉及到一个知识,传输又分为连续传输,和非连续传输。速率要高性能那当然选择高性能你,但是复杂一点点,因为接受和接受是同时在进行的,那么在时序就要求,第一时刻是同时发送1、2,那么接受到了1的时候,2已经在传输、同时又在转运3在发送寄存器、当接受到了3的时候四又在传输,这就是连续传输的过程、那么非连续传输就是,先发送,在接受,在发送,在接受,这样就会大大减低传输效率,同时,在这里就涉及怎么处理这个底层的关系,这里涉及到频率了,因为是时钟,所以在时序图上看过来的话,就是频率高和低的关系。发送寄存器和接受寄存器,这个和下面要讲的大多数协议一样:tx rx  我们就可以通过这个来判断发送和接受的状态和时机,进行数据发送和传输的处理。在这个过程中我们还需要确认时机,判定  如果有数据那么就是set、当tx是set那么就是可以发送了,使用seeddata,发送数据,在判定rx是否接受到了数据,也是set,

就可以将rx里的数据保存下来,用我们这里的接受到。在写的过程中也将目标地址写到了我们想写的数据,其实还涉及到寻址的过程,因为我们通过Isp发送了时序也就是数据,数据又分为了这个寻址位 数据位 校验位、停止位,当然我们这里是没有停止位的,

如这里其实发送和接受都是同时进行的,我们在设置时可以直接 unit_8 swap(*adress,data)

启动

读取tx

发送

读取rx

接受

I2c两更线,slc、sda数据线和时钟线,也是同步通信,半双工,双工的概念,就是发送和接受是否是同时的,这个sda一更数据线自然是半双工,之前的isp有自己输出和输入那么就是全双工、

i2c通过差分信号来数据传输,以及响应,一住多从 多主多从,只需要两根线,所以设备的线都连接在一起,有两个电阻的接口、scl在高点平是,sda从高拉到低 即为开始,slc在高点平是,sda从低拉到高,结束通信,中间有寻址位、数据位 应答位、停止位、ustar中间还有校验位,

在这里我们切入了事件的概念、因为两更线在不同的寻址 发送 应答 停止是,我们进行不同的点平和读取接受操作,我们就可以看作是事件,在stm库函数当中封装好了这些事件,我们就可以通过这些事件来判定和等待下一步的操作和时机,在开始时,每一步发送和接受时,判定事件是否发生来完成一次数据传输 在发送和接受的时序函数处理大同小异 就是接受时需要用一个变量去将接受的值保存下来,就可以。以上大概是i2c通信。剩下的下次在码字,第一次写了这么多总结,但是不够细节,下一步是扣细节一些,用代码项目来复刻,以上是思路和流程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值