当前位置: 首页 > news >正文

网站建设具体流程离石市网站建设公司

网站建设具体流程,离石市网站建设公司,wordpress全站背景音乐,网站建设技术员保密协议咱们今天呢给大家讲解咱们 stm32 开发当中的串口的应用啊 #xff0c; 串口这个专题呢啊是我们那 个学习上必须要掌握的一个外设串口有什么作用呢#xff0c;其实在我们以后的这个开发程序当中#xff0c;咱们可能经常需要用到一些调试 信息#xff0c;对吧#xff1f; 啊… 咱们今天呢给大家讲解咱们 stm32 开发当中的串口的应用啊  串口这个专题呢啊是我们那 个学习上必须要掌握的一个外设串口有什么作用呢其实在我们以后的这个开发程序当中咱们可能经常需要用到一些调试 信息对吧 啊咱们可能今天要去调试我们的程序那调试程序怎么了 我们肯定是需要 有一些调试信息输出的现在可能调试你的这些 c 语言啊之类的时候 咱们经常用 printf但是呢啊在我们裸机开发 当中我们的裸机又没有带操作系统也没有屏幕对不对有很多情况下都是这样的那 么这个时候你想看到一些调试信息 你怎么去做呢这个时候你就要用到我们的串口啊uart 它的最大的作用其实就是用来调试那么除此之外呢串口也是我们最基本的通信方式 之一如果说我们两个板子或者说我们有啊我们的板子和我们的电脑需要做一些数据的通信那么 这个时候呢啊串口也是我们经常用的这个通信的手段之一所以说咱们学习这个串口了啊 对于我们以后的这个程序开发它是有很大的这个作用的。 那么呃我们本节的专题呢给大家呢啊分为4 个章节给大家进行一个讲解啊首先呢第一个章节呢给大家讲一下串行通信的一些概念包括我们串口的一些硬件啊电路怎 么去链接然后呢呃它的这个通信协议是什么样的我们都会在这个第一节给大家进行一个 介绍。然后呢我们着重的再去给大家讲解咱们串口相关的一些寄存器啊因为咱们可以通过这些寄 存器去了解啊咱们最底层究竟是怎么去操作这些硬件的那么啊对于我们知道这个底层的这 些技术细节是有非常的大的好处虽然说咱们在实际的这个开发过程当中啊咱们很少直接 去操作这个寄存器啊。第三节和第四节呢咱们分别从这个呃寄存器去操作我们的串口还有我们的库函数去操作  我们的串口啊两方面给大家进行讲解啊讲解咱们这个串口的数据收发啊怎么用我们的  寄存器去实现 然后呢就是怎么样去 需要用我们那个库函数去实现我们串口数据的收发 那么我相信啊通过我们这个原理寄存器还有两个实例的介绍那么大家肯定是能够把这个  串口呢给掌握好那好那么我们现在呢就开始给大家讲解咱们串行通信的一些基本的概念。 那么说到通信啊说的通信那么我们肯定要给大家讲解我们通信的一些最基本的概念对  吧那么我们通信怎么进行分类的啊然后呢我们这个创新通信当中呢我们还会给大家介  绍咱们的这个 uart就是它的一个啊串行通信啊外设。然后呢我们就给大家介绍这个串口的  电路链接以及我们的通讯协议嗯 这个串行通信当中呢 我们还会给大家介绍咱们的这个就是它的一个串行通信啊外设 然后呢我们给大家介绍这个串口的电路链接啊以及我们的这个通信协议对吧那么我们  接下来就来看一下咱们的这个通信的基本概念。提到通信那么我们知道你如果说要和另外一个人进行通信首先必须要保证的是要有两  个人 没有两个人 那你单方面一个人在那儿吼 那怎么叫做通信呢你只能叫做广播啊 我们这个通信啊肯定也是一样的它必须要有两个对象一个用来收取数据一个来发送数  据 那么啊根据我们这个数据通信。两者之间是否同步我们把它分为这个同步通信和异步通信那么我们这个地方呢啊就给大 家首先给大家讲一讲这个同步通信和异步通信它有什么区别啊同步通信其实说白了就是说通信的双方它可以根据一个同步信号来进行一个数据的收发也    就是说他们有一个共同的同步信号这个同步信号往往就是时钟往往就是时钟也就是说    你看到我 a 和 b 两个对象要进行通信 他们呢中间会有一个共同的同步信号 这个同步信    号呢往往我们都是在他们两者之间接一根信号线这根信号线呢用于传播一个什么呢用于    传播一个时钟啊其实就是一个时钟线其实就是一根时钟线。所以说以后你凡是看到啊两    个对象来进行通信的时候他们之间连接了一根时钟线那么一般他们的通信就是同步通信    啊因为这个时钟啊是他们这个通信速率的一个参考他们两个参考的标准是同样的完全一致 所以说这种情况下他们就是同步通信啊他们都会有一个共同的时钟信号啊共同的时钟信    号那么他会他们就会根据他们连接的这个时钟信号来进行数据的采样和收发所以说他们    的这个呃收发的速率完全是同步的 那么呃完全是同步的就可以导致他们的这个通信速率   通信效率会比较高通信效率就会比较高当然了他们的付出的代价肯定就是啊要多花一个    管角去连接一个使用线 那么这是我们的这个同步通信与此对应的啊与此对应的就是我们的这个异步通信 我们异步通信呢它刚好没有这个时钟线 看到没有 两者通信之间他们并没有按照一个统一的这个信号去进行一个数据的收发那么我们就就在  想了对吧你们不按照同样的这个数据去收发那么我一方收的快一方收的一方发送的  快一方收的慢那岂不是造成一个这个啊通信的这个误差吗 啊对的肯定是有的他  们呢呃不是说没有这个时钟线他们的这个速率啊就不能匹配啊不是的。一般来说我们每  一个外设它内部都会有一个时钟啊都会有一个时钟那么他们完全可以参考他自己内部的  这个时钟呢去设置它的这个通信速率然后呢比如说我们两个都有一块表对吧 我们都看  着按照自己的这个表的这个时间来调整我们的这个收发数据的快慢但是我们两者之间的表  可能这个有一点点误差对吧可能两者之间的表它并不是完全同步的所以说他们两者之  间虽然说他们是按照他内部的这个时钟来设置它的这个收发速率但是毕竟两者并不是完全  同步的所以说他们是异步的啊这种情况下我们就把它叫做异步异步呢啊他们呢一般  在收到的时候还是会去设置他们的收发速率就相当于咱们的这个串口啊我们的这个串口  它是典型的一个异步通信他们呢一般都会设置他自己的一个波特率啊两边儿来一定要设  置为一样这样的话他们的这个数据收发才会呢啊一致那么由于他们的这个两边的这个时  钟啊可能精确度的一些问题两边不可能完全一致那么就可能会导致他们在数据收发过程  当中啊每发数一个位。这个的时候就可能会有一点点的这个误差所以说对于我们异步通信  来说它一次性通信的速率一般都不会很大 。因为你要是一次性通气的速率很大就可能导  致你的这个啊通信的这个数据啊收发的误差会变得越来越大啊那么这显然不是我们愿意见  到的所以说他们的这个通信速率一次性传输的这个数据一般都不是很多项目的串口可能  就是 8 位9 位这个样子。那么我们后面呢给大家讲解这个呃通信的这个协议的时候呢啊 还会给大家提那么异步通信他们的好处呢就是咱们没有这个时钟线比如说减少了很多方便  啊没有这个是中线那么省略了很多一些资源啊他们在通信的时候只要约定好这个通讯  速度就可以了。那么省略了很多一些资源啊他们在通信的时候只要约定好这个通信速度就可以了参照着 他们自己内部的时钟 就是大家以后看到是凡是这两个 a 和 b 之间进行通信的时候 他们并没有共同的时钟 那么他们就是异步通信好那么嗯大家了解到这里之后肯定应该明白同步通信和异步通信的一个区别说白了你就 直接看有没有这根时钟线对吧那么没有呢就是异步通信有就是同步通信啊可以这样 去理解那么这是从这个数据的这个收发是否同步去对我们这个通信来进行一个划分然后 划分为同步通信和异步通信。我们还可以从在某一时刻你是发送一个未来还是同时发送很多个位去进行一个划分我们把 这种通信呢啊把它划分为这个呃串行通信和并行通信串行通信指的就是在同一时刻你只能搜或者是发送一个位一个位的信息那么那么很显然你  在同一时刻只能发送一个位那么我们只需要用到的是一根信号线就可以了不管是你是收  是发我们只需要用一根信号线啊我发送的时候我就用这根信号线很显然我要发送大量  的数据的时候由于我只有一根信号线那么我同一时刻我就只能发一个位只能发送一个  位我接收的时候也是我接收的时候也只用一根信号线那么我接收的时候呢也是同一时刻  只能收一个数据位那么我要接受很很多很多数据的时候我只能一个位一个位慢慢的接收。 像这种串行通信呢啊它的缺点很明显就是它同一是个只能收发一位那么就会导致了  他的这个收发数据的速率。啊收发数据的数据量是不是比较小啊 啊通信的速度比较慢 通信的速度比较慢 但是它的优点是非常明显的 就是它非常节约 io 口资源 。那么我发送  数据和接收数据我只需要用一根信号线就可以了 那么相对来说它的这个 io 口的资源是不  是非常的节约下来如果说你的芯片 那么你的 io 口资源非常的有限 那么你又想和其他  人进行数据的通信那么你就完全可以选择我们串行通信的一些方式啊串行通信的一些方  式。缺点就是什么呀速率相对较慢啊叫的较慢然后它的优点呢就是占用资源的较少啊 这个管理的资源较少那么我们这个并行通信啊刚好就是什么呀也是和它对应的我们并行通信是指的是同一时 刻可以或者发多个数据位多个数据位那么你要同一时刻要发送多个数据位很显然你一 根信号线你就搞不定。对吧那么你必须要什么呀 多根信号线比如说我同一时刻发送 8 个位过去 你看我一个 char 一个类型是不是 8 个位呀 我 8 个位我就可以一次性就发送过 去了而像我们这种串行东西的话我得发送 8 次因为它一次性只能发出一个位那么对于 我并行通信来说很显然我的这个通信速率会变得非常的快。通信速率变得非常的快那么 它的缺点也非常明显就是我占用的管脚会非常的多。我要一次性发送 8 个位那我就需要 8 个数据线呀我要占用 8 个管脚呀对不对那么这缺点就是占用的资源设置太多了像 我们的这个啊芯片它的这个拐角一般来说都是非常这个宝贵的那么除非是在一些特殊的要 求下 我们才需要接很多很多根这个数据线。比如说对我们这个内存 我们的这个 CPU 和 我们的这个内存芯片进行数据交互的时候那么肯定要用并行因为我们要求我们的这个内 存呐收发数据啊一定要快这样的话我这个整个程序跑起来才快那么我们的内存芯片和我 们的这个 CPU 的之间的数据信号连接的话 那么很显然肯定是需要这个啊 一般呢都会用 这种并行的东西用这种大量的数据管理啊很多根数据管脚来进行这个数据的收发啊那么 啊对于一些其他的像我们的这个 stm32 和其他的这些外设通信的时候呢一般可能用的串型会比较多一点点啊用串行比较短 。因为我们有一些外设 他的这个速率咱们可以要求他们不用达到像我们内存那样那么快对不对啊 它的这个通信 速率一般可能就比较慢的 可能几十 kb 几十兆几兆这种同一速度 对不对像我们内存那可以达到啊几百兆 甚至是上 G 的这种通讯速度啊 那么这就是我们这个串行通信和并行 通信的一个区别包括他们的优缺点对吧那么我相信大家来一眼就能看出来然后我们 在这里呢直接给大家啊进行一个说明。然后我们可以从这个通信的方向来进行一个划分然后我们可以划分为单工、半双工和全双 工 。我们看这个箭头大家都明白 。如果说我们是单供的这种方式那么很显然那么就只能 是一个对象单方向的跟另外一个对象进行通信。而另外一个对象不能够什么呀给他进行通 信 那么这就是一个单方向的 你要么就是 a 发送数据给  b 只能是一个方向 。或者说你 a  接收数据对吧只能是反过来的这种方向只能是一个方向不管是你是收还是发那 么你只具有一个方向的这种通信的能力。那么这种情况下就是你的单工对吧那么你只能做接收设备或者是发送设备只能做其中 之一 那么这就是单工的半双工就是说你可以发送数据。也可以接收数据但是你在同一时刻不能同时的发送和同  时的接收。你具备接收和发送的能力但是你不能同时的发送和接收这就是我们的半双工 半双工、全双工很显然它的功能就会更加强大。对吧那么你既具备接收数据的能力也具备发送数 据的能力 而且你可以同时的发送数据和接收数据 。这就是我们的全双工。如果说以前学电子通信的这个同学的话肯定对这些概念应该非常的了解那么我们有一个 例子。就是非常清晰和他那个非常的那个得到我们的这个收音机比如说它就是一个典型的 单工像你收音机的话你听的时候你只能听到我们远处的这个广播电视台给你传过来的这 些数据信号那么你不能传输数据信号给远处的这个广播电视台那么很明显你就是只能作为接收数据的 存在那么你就是一个典型的单工数据通信那么像我们的对讲机它其实既可以说话也 可以听到对方的说话但是在同一时刻是只能是单方向的 。要么你说要么别人说像我们 的电话就不一样 电话就是一个全双工的像我们的手机对吧你既可以说也可以听到 对面的声音 就是这个典型的一个例子那么大家了解一下咱们这个数据从方向来进行划分 。分为单工 、半双工和全双工。那么这就是我们通信当中的一些比较基本的概念我们在这里也给大家做了一个简单的总结。 对吧那么比如说像我们后面要讲到的这个串口 那它就是一个典型的什么呀异步通信   首先它是异步通信它中间没有这根时钟线另外它是一个全双工的它既可以发送数据。也    可以接收数据另外它还是一个串行的它是串行的通信方式因为它的发送数据和接收数    据都是一根线 。那么我们后以后可能还会学习到什么 SPI 、I2c  之类的 它们其实就是同步    通信的 。那么有些是半双工有些是全双工那么以后我们讲到这些通信的时候再给大家    进行一个介绍。那么这里大家先有一个印象那么接下来我们给大家介绍咱们 STM32 的串口以前我们可能学习单片机的同学也接触过  这种串口对吧那么我们通常把它叫做  UARTUART  就是咱们的这个同步的大家注意对于我们这个地方 。我们以前的这个  UART  其实就是一个异步收发器 。 它对我们这个  STM32 来说它叫做  Usart  它其实中间加了一个同步 就是说对我们  STM32 它里边有一  个叫做  Usart  的东西 。它既可以支持同步的这种收发 也可以支持异步的收发 。但是实际  上我们在后边的这个使用过程当中 我们就把它当做这个普通的  UART  来使用 。那么就是  把它当作一普通的串口来使用 我们并没有使用它的同步通信 。就是它支持这种同步通信 那么需要我们去把时钟线给它连上去。那么它就可以支持同步来进行通信了。但是我们其实  串口用的最多了我们前面都说了主要是用来进行一些打印调试的对于我们来说普通  的这种  UART  的这个功能就已经够用了。UART  相对于  Usart  来说 其实就是裁剪掉了它的这个同步通信的能力 。它的这个功能给  它裁剪掉了 那么不管是  USART  还是  UART 那么我们后边就把它当做是普通的  UART  来使用 。大家了解就可以了因为其实在我们 STM32 的这个串口当中其实它支持很多很  多的功能。但是我们都没有去使用到这些功能其实还是有一些鸡肋除非你是在这个特殊  的应用下那么才可能会去使得用以外。平时我们都不怎么使用我保证大家以后在开发当  中使用到串口的一些其他的功能也是比较少的。大部分你都是用来做调试的所以说大家也  不用担心 你看我们在这里也给大家写了  因为  SAT  的在我们  STM3 上用最多的就是打  印一些程序的信息。帮助我们去调试当然它也可以传输一些信息我们也可以远端的通过  我们的串口去控制我们的这个板子 。这个也是可以的 另外  UART  这一个外设 这个就是  我们的这个  UART。在我们很多芯片和我们 STM32 进行链接的时候进行数据传输的时候 很多也是有这种  UART  来进行传输的 。比如说我们有一些  Wifi  芯片和我们的  STM32 这  个控制芯片要进行这种数据传输的时候。很多也是采用的这种串口来进行通信的。这里也给  大家进行一个说明它除了应通过这些用于这个打印信息以外还可以通过做一些这个数据  的传输那么我们对 STM32 的这个串口简单的进行一个了解。下面我们就来给大家说一说咱们这个 STM3F407它有它的一个串口的配置对吧那么对于我们 STM3F 407 来说它有四个 USART  和两个  UART 。也就是说它有四个这个串口了 它除了支持异步通信以外 还可以 支持同步通信。另外还有两个这个  UART  就是最简单的这种异步通信 那么我们可以看到它有  USART1 、 USART6、USART2、USART3  和  USART4 和  USART5。就是 4 个  USART  和两个  USART。 那么其实我们主要关注的它的这个管脚主要是它的这什么呀发送数据和接收数据的管脚 。 我们串口一般来说它是串口串行通信的对吧那么它的发送数据和接收数据都是一根信  号线所以说我们只关注它的发送数据管脚和接收数据管脚。那么对于同步通信的还支持这  个同步通信的这个串口来说的话它肯定就有一些时钟管脚。包括还有一些管脚可以是用来  控制它的这个硬件数据流的那么大家可以看到那么这些拐角咱们暂时不用去关注我们只需要关注上面就可以了那 么我们在这里只是给大家整理出来了我们哪些管脚它可以支持这个  USART1  的功能 。 USART6 的功能对吧 比如说  USART1  的功能我们的  PA9 和  PA10包括  PB7 和  PB6 都可以去支持这个  USART1  的这个功能 。那么这些具体每一个拐角支持的功能 我们完全 可以从以前咱们那个数据手册当中那个管脚的功能分布图。大家可以去查对吧每一个管脚可能支持很多个功能那么对于我们串□来说我们给大家整理在这里地方那么大家可 以直接查 。当然了我们在后边的时候你要去使用具体的一个串□的时候你首先还是得去 看你的电机原理图。对吧你要看看你的板子上是否用到了这个串□ , 那么并且这个串□是 连到哪一个管脚的 因为我们有一些很多管脚都可以支持同一个串□ , 比如说像我们的这个 USART1 那么它除了  PA9 和  PA10 以外 。PB6 和  PB7 也可以当作为  USART1  来使用。那么你在使用的时候你一定得去看你的电器原理图 你用到的是  PA9 还是  PA10还是说  你用的是  PB6 还是  PB7 对吧 它们两个可能只能选择一个一套管脚来作为  USART1  来  使用对吧只能选择一套其他的都是一样我们可以看到大部分的这个串□都可能会支  持这个两套管脚 。它都可以配置为那种功能。那么我们后边对于我们的这个板子我们也是  用到了串□的那么我们先来看一下咱们这个串□的这个硬件。对于我们的板子那么大家  拿到咱们这个  FSM4 来说 我们使用到的是两个串□ ,  一个就是  USART1 那么另外一个  用到的是  UART3 URAT3 大家看到它们的□是不一样的 这个□是公□ ,  那么这个□是  母□ ,  它们的插槽的这个指针方向是不一样的。那么你在链接的时候你要看你是否有那个  串□线那么像我们底下的这种串□线那么我们给大家配的应该是配的这样的一根串□线。 这个串□线它可以直接插到我们这个  UART3 里面  它和这个插槽的方向刚好是相同的。其实我们给大家配的一根应该是  USB  转串□线 为什么呢 因为一头是我们的这个  DB9  的这种插槽 它的这种大的这种插□ ,  另外一□是我们的  USB  □ 。因为我们普通的笔记本  现在已经很少有这种直接的这种串□了所以说我们就不需要这边的这种串□线而对于我  们以前的一些台式机来说 可能还有串□ 。对吧那么如果说你要和你的这个台式机连接 你可以直接用我们的两边都是这种  DB9 插槽的这种串□线连接我们的板子和连到我们的这  个台式机 。当然了你的台式机仍然也有我们的  USB  □ ,  对吧 直接插  USB  □也是可以  的 。那么一般来说我们现在这种  USB  转串□的这种线用的会更多一点但关于我们这个  UART1 。可能就是我们这个串□线它的这个方向可能得去找另外一种那么你得去找它另  外一种的串□线是这边这个样子的那么你才能够插得进去我们这里使用到了两个串□  一个  UART  线 我们可以直接用我们的  USB  转串□线去进行连接 。一端连接到我们的板  子上一端连接到我们的电脑里边。然后如果说你想使用  UART1 你又没有这根线怎么办  那么我们在旁边还设计到了一个这个东西  它是一根  mini USB  □ ,  那么这一根  Mini USB□我们可以把这个  USB  □当做串□一来使用 。仍然是串□一哈大家注意仍然是串□一  UART1 也就说它和它都是使用的是  UART1 那么这个这一个小的这个  USB。这个  mini  USB  □ ,  我们可以通过这样的一根线 我们普通的这个电源充电线那么一端插进我们的这  个插槽里面。另外一端就是我们的标准  USB  □可以插到我们的电脑里面我们可以使用这  一个 使用我们的串□一 。它也是串□一 那么两个都是串□一 对吧 两个都是串□一 我们两个不能同时使用它只能使用一个那么怎么去选择这个地方那么我们在这个地方  有一个选择开关你拨向这一边就是我们的这个使用的这一个对吧公□ ,  那么你使拨  向另外一边 就使用的是我们这一个小的这个  USB  串□ ,  USB  转串□来使用的 。它是这  样的它内部就是这样的他这个地方可以通过我们的这个开关去进行选择。那么另外我们  从我们的电器原理图里边也可以看到对于我们后期来说我们就使用这样一根线其实都够用了就是我们这个普通的电源充电 线。对吧那么这根充电线你就是一头插我们的板子一头插在我们这个上面那么另外一 头是我们的标准  USB  □ ,  插进我们的电脑 然后我们把这个选择开关把它拨到这个  USB 转串□的这一侧那么我们就可以使用这一个  UART1  了。这个  UART1   了这是解决咱们 这个没有相应的串□线 这样的标准的这种串□线。咱们可以使用这样的一种方式当然了使用这样的一种方式我们可能需要装一些驱动需 要装我们的  CH340 的驱动大家注意如果说你插进去之后连接到我们的电脑你的电脑 的设备管理器没有反应 。那么你应该把这个  CH340 的驱动给装上啊。这样的话它才能去识 别我们  CH 340 的驱动 在我们的资料里面有 希望大家可以提前安装好。这就是我们的硬件大家看一看我串口长什么样子那么这就是我们的这个硬件的一个部分 然后我们再来看一下它的这个电路的链接其实对于我们串口来说它是串行通信。也就是说  它的发送数据和接收数据都是用的一根信号线 。那么比如说我的这个  STM 32 站 或者是  其他的这些微控制器要和我的  PC  的串口进行通信。它怎么进行链接的一般来说我这个  STM32 的发送管脚它可以直接连到这个  PC  的接收管脚。然后 stm32 的接收管脚端连接  的是我们电脑端的发送管脚端 。刚好就是发送 、连接 、接收接收 、连接发送就是这样的一  种连接关系。但是对于我们普通的微控制器 还有我们的这个电脑 、PC 他们是不能这样直接连接的 因为他们的这个电瓶不一样。对于我们的这个微控制器像这种板子来说 。它内部的这个电 瓶是我们普通的 TTL  电瓶那么对我们这个电脑来说 它的这个电瓶是我们的 。这个可能 就是我们的  RS232 的电瓶了 它两者这个电瓶关于逻辑 1  和逻辑 0 的定义是不一样的 。具 体他们是怎么定义的 大家可以下来查查资料。那么我在这里只告诉大家他们是不能那个完全不一样那么不一样的话就导致了你这个电 平不能直接连接。否则别人就识别不了那么所以说它中间一般都会有一个转换器把这个 电瓶转换过来。我们在发送的数据的时候比如说我们的微控制器往外发送的时候通过这 个转换器就可以把这个 TTL  电平转换成  RS232 的电平 。然后发送到我的这个  PC  端 。发 过来的时候它就可以把这个  RS232 的电平转化为 TTL  电平 然后我的这个微控制器可以 识别了 。就是一般都会有一个转换器 。像我们板子可能用的比较多的就是什么  MAX232 之 类的东西大家可以找一找我们板子上也有这种芯片 。那么对于我们如果说你是普通的 这种微控制器和其他的微控制器进行一个连接的时候那么由于电平是一样的。对吧你就 可以不用中间的那个转换器一般来说我们串口通信的管脚大家可以看到我们基本上用发送数据管脚接收数据管脚  和再加一根地线。三根线一般都够了地线主要是用于这个平衡它们之间的电压对吧 平  衡它们之间的电压好这就是我们这个硬件的链接大家要了解那么对于我们是虽然  说我们主要是编程。但是我们要以后要去看懂我们的电气原理图看起要看清这些电气原理  图我们肯定也是知道。那么对于我们这一个外设它的基本的这个电路是怎么进行连接的 那么我们这个电路的连接就给大家讲到这里 那么下面我们再给大家讲讲咱们这个串口。那么我给你发送数据你那边接收数据咱们究竟是怎么去约定这个数据收发当中的一些细  节的部分约定这些数据收发的这些细节的一些东西就是我们的一个通信协议那因为我  给你发送一大堆数据发送给你。那么你要怎么去解析 我们之间是不是要有一个约定如果  说我们没有这个约定 我就不知道怎么去解析你的数据 。所以说不管是任意一种通信方式 它们都会有它自己的一个通信协议 那么通信协议就约定了。我如何去解析你的数据如何去那个根据你的这个发送速度来进行接收来给你进行匹配等 等的一些内容我们来看一下。那么串口自然也有串口的这个通信协议了串口的通信协议 我们来看一下  比如说我的发送方  a  要给接收方  b  发送数据 。那么我们发送的管脚  TX 连到了对方的  RX管脚上面去发送管脚连到对方的接收管脚上面去正常情况下中间连 接的这根信号线它们是保持高电平。就是说我在默认情况下不发送数据的情况下保持的 是高电平。那么一旦我要发送数据的时候我会把这根信号线电瓶给它拉低给它发送一个低电平 0 。那么对方此时感受到了我接收管脚电平的变化变成了一个低电平 。对方就知道  你要给我发送信号了你要给我发送数据了那么很显然这个 0 就是我的一个起始信号。就  是我发送数据的一个起始信号我们的这个 0 就是我们整个数据通信当中的起始位。好对  方感知到你要发送数据了收到一个 0 的低电平那么接下来他就要做好接收数据的准备了。 那么同时我们发送方就可以去发送数据了。那么一般来说我们的 在我们  STM  三人当中 我们可以发送八个数据位或者是 9 个数据 位 。发送一堆  data 发送一堆  data 这就是你发送的数据可能就是 8~9 个位的数据 。那 么你在约定通信之前 你一定要约定好你究竟的你的数据位究竟要发送 8 个位还是发送 9 个位 。我们两边都要约定好 。一般来说我们就选择 8 位  因为我们一个  QR  发送一个字符 刚好就是 8 个位 所以说一般我们都是选择 8 位 。那么数据发送完成之后 我们可能还会 发送一个校验位 可能还会有一个校验位。那么看你需不需要这个校验这个校验位是什么意思 嗯我们可选的校验有奇偶校验和偶  校验 那么我们的这个校验位目的就是为了验证一下我们前边的这个数据它发送是否成功。 或者是发送是否有丢失它是怎么去进行校验的 比如说我们发送一个数据 我们发送一个八位数的数据  比如说  0X05 。大家先把它换算成二进制  因为我们这一个发送是一个位的进行发送的 对吧 那  么我们拆成二进制 它就变成了 00000101 对吧那么这样的 8 个数据位我在发送了起  始位之后那么我紧接着要发送数据位我怎么去发送的 我是从低位到高位一个位的发送 我先发送一 再发送 0 再发送一 再发送 0 这样由低到高一次性依次发送 。然后我看我  需不需要校验那么我有两种校验方式可能是奇校验可能是偶校验 。如果说我选择奇校  验那么我就要去核对一下我发送的数据里边一的个数里边一的个数是否为奇数个。如果说  我一的个数它是偶数个位  它不是奇数个位 那么我显然就要在我的校验位上面补一个一 因为我校验是一个位那么补一个一的目的是为了让我数据位加上我的校验位总共一的个数  为奇数个一。这样的话我发送给对方对方把这个数据接收到了之后他会去检验他收到的  数据和他的校验位一的个数是否为奇数个 。如果为奇数个一的话 OK  它就认为你发送成  功。如果它收到的数据变成了偶数个一那么很抱歉它就认为你在数据传输的过程当中可  能出错了 。它就要求你重发这就是我们的这个校验 。它去核对一下我的这个数据是否一的  个数是否有偶数个那么如果为偶数个的话它的这个校验位上面它就什么呀 不做任何的  改变 就填写一个 0 就可以了。那么如果说它发现你的这个发送的数据是奇数个一 那么它就会在这个校验位上补一个一 保证你的这个数据位加上我的这个校验位的总共一的个数为偶数个一 。这样的话往外发送 那么对面也会按照的这种偶数的校验来校验你的这个数据位和校验位它也会去核实一下你  的这个数据位加校验位是否为偶数个一。如果为偶数个一它就认为你发送正确那么如果  为奇数个一它就认为你发送错误对吧那么这种校验方式它是一种比较简单的这种校  验方式它肯定校验也不是非常的准确有一些错误肯定是那个校验不出来的但是它能够  大概减少 50%的一个误差 可以减少 50%的一个误差。这种校验是最简单的一种校验就是我们串口当中使用的一种奇偶校验其实咱们在发送数 据的时候有很多种校验方式的。包括一些什么  CRC  的一些校验可能会更加的复杂 。它校 验起来也会更加的准确 。那么本身我们这个串口它在发送数据的过程当中 你就只是发送 8~9 个数据位一次性就传输这么多所以说它的这个出错的概率其实是非常低的那么大家 不用担心这个问题。一般来说都很少出错极少出错。所以说一般来说我们也并没有去使用 它的校验位。 好如果说你这个校验位你配置好了之后那么我们这整个数据也就发送完毕了发送完毕 之后我们需要有一个结束信号那么就是我们的这个停止位 。它会把整个信号线再拉高发 送 1  至 2 个高电平 发送 1  至 2 个高电平 OK 对面收到之后也就知道了你整个数据的传 输已经结束了。数据的传输已经结束了这就是我们整个发送由我们起始到我们的停止一般我们都采用的 是 8N1  的这种方式 。就是说这个我们发送 8 个数据位n  就表示的是没有既有校验 。然后一就表示的是咱们只选择一个停止位就可以了  因为咱 们的这个数据传输多半都是用于调试的。基本上不会有一些太多的这个错误因为我们串口 还是比较稳定的 所以说它的运用才会这么广好那么这就是我们这个串口通信协议的介绍我们给大家说了这个串口是如何进行发起始 发送 。如何发送这个起始信号如何传输数据 如何去校验以及如何去停止那么我们还有一个东西没给大家提 就是我  a  以多快的速率给你发 你  b  必须就要有多 快的速率来接收。我要保证我发送的速率和你接收的速率要匹配咱们这个发送和接收才能 perfect 。才能完整 那么这个地方我们就提到会有一个速率的问题 这个速率的问题对于 我们串口来说  它一定要约定好。两边都要约定好这个相同的这个速率才可以我们在串行通信当中我们会有专门的一个标准 对速率的一个标准就是我们的波特率它就是用来描述咱们数据传输的这个速率。特别是  在我们串行通信当中它用的非常的多。那么我们在串行通信当中我们就是用波特率来进行一  个描述的波特率它的单位就是  BPS 。就是说我每秒传输多少个位 BPS  每秒传输多少个  位那么它是衡量咱们数据通信的一个重要的指标。那么这个  BPS  一般来说我们会有一些  标准我们国际上的标准就是这些什么 1 10 、300 、600 、120 。可能我们用的比较多的就  是 1152009600我们以后可能会用的比较多一些 。一般来说我们这个波特率对我们串口  来说它传输的数据是有限的 。所以说对我们 stM32 来说 它可能说理论能够达到什么 6 兆  之类的 咱们很少使用到这么高的这个速度一般可能就是 几十  KB  了 。这么多 。这里还有  一个例子 就是说如果说我是给你设置的 1 15200BPS 就是这样的一个波特率 。其实它指  的就是每秒钟传输 115200 位并不是说我数据就每秒钟传输这么多个数据 。因为整个位里  边还包含了咱们的一些起始信号、校验位、结束信号等等所以说它的这个真正的这个数据  位并没有这么多 。那么大家一定要注意。那么我们以后在这个设置串口通信的时候就要去配置好它的这个波特率两边都要配置为  相等的这个波特率那么表明它们传输的数据和接收的数据一定要匹配好那么我们本节课  主要是给大家介绍了一些通信的基本概念。还有咱们初始通信的协议。包括波特率这些东西 包括咱们硬件的一个电路接口给大家进行了一个介绍。那么我们后边再给大家介绍创口的一  些其他的东西 我们本节课就到这里 感谢大家的收听 。再见
http://www.pierceye.com/news/696940/

相关文章:

  • 兰州网站优化excel做网站链接
  • 代做单片机毕业设计网站广州网站建设小程序开发
  • 深圳网站官网建设方案安阳做网站电话
  • 批量扫dedecms做的网站哪个网站可以兼职做效果图
  • 建网站与建网页的区别wordpress 七牛云 cdn
  • 专门做养老院的网站城市文化网站开发背景
  • html5写的网站有什么好处淄博网站制作制作
  • 服装设计素材网站大全做旅游的网站的要素
  • 企业网站建设报价清单深圳小程序建设公司
  • 给人做传销网站开发平台软件要多少钱
  • 腾讯建设网站视频视频视频手机网站报价表
  • 门户网站建设要求南京seo公司教程
  • 网站建设制作要学什么软件福建省城乡建设厅网站
  • 网站遇到攻击时应该怎么做网络广告推广平台
  • 老牌网站建深圳市建设工程服务交易中心
  • 网页界面设计布局青岛百度关键词优化
  • 彩票网站APP建设seo为什么不景气了
  • ps做网站标签wordpress 角色和权限管理
  • 网站建设情况报告范文微网站可以做成域名访问
  • 增城网站公司电话西安高端网站建设首选
  • 信息流广告素材网站零基础学做网站
  • 北京服饰网站建设实训百度搜索引擎的总结
  • 营销型网站建设的一般过程包括哪些环节?体育视频网站建设
  • 门户网网站seo怎么做电子商务平台怎么注册
  • 凡科网站插件代码阿里云网站备案后
  • 网站用什么系统好用免费网站建设找哪家
  • 网站到期续费吗网站开发是培训
  • 别人帮做的网站怎么修改怎么做产品推广和宣传
  • 国内返利网站怎么做php建设网站工具
  • 网站设计教程文档创业商机网农村