历史上的今天
今天是:2024年10月20日(星期日)
2021年10月20日 | stm32专题十:通讯
2021-10-20 来源:eefocus
在stm32的外设中,串行通讯包括串口、IIC、SPI,并行通讯包括SDIO、FSMC。
/******************************************************************************************/
全双工:USART、SPI,可以同时接受和发送;串口和SPI也可以工作在半双工。
单工:IIC。
/******************************************************************************************/
同步:有时钟信号。

在时钟高电平时,数据有效(必须保持不变),在时钟低电平时,数据是无效的,可以变化。这时,要保持数据正确,对时钟的要求也比较高,不能有尖峰杂波。
异步:无时钟信号。

stm32中,对UART通讯采用过采样的方式,来确定数据的准确性,通常使用16倍过采样,具体的实现方式:
如果检测到8个连续的低电平,则认为起始信号来了,这样每次都在计数16个采样脉冲读数据,这时就是在每个信号的重点读取数据,取中点处(第8个脉冲)作为有效信号,这是最常用的做法。还有些方式,计算7 8 9的脉冲,然后二选一作为有效信号,两种方式都可以,但第一种准确性更高。
/******************************************************************************************/
比特率和波特率
码元:在数字通信中常常用时间间隔相同的符号来表示数字。这样的时间间隔内的信号称为码元,这个间隔称为码元长度
波特率:是码元传输速率单位,他说明单位时间传输了多少个码元。
比特率:是信息量传送速率单位,即每秒传输二进制代码位数。bit/s
可能还不是很清楚,举例说明:
如果在数字传输过程中,用0V表示数字0,5V表示数字1,那么每个码元有两种状态0和1. 每个码元代表一个二进制数字。此时的每秒码元数和每秒二进制代码数是一样的,这叫两相调制,波特率等于比特率。
如果在数字传输过程中,0V、2V、4V和6V分别表示00、01、10和11,那么每个码元有四种状态00、01、10和11. 每个码元代表两个二进制数字。此时的每秒码元数是每秒二进制代码数是一半的,这叫四相调制,波特率等于比特率一半。
/******************************************************************************************/
史海拾趣
|
如果设计稍显复杂,那么对底层细节的过多关注就会成为一种累赘。 试想我们平时在电脑上编写C程序,比如在显示器上输出一行字,我们只用一句printf()即可完成,至于打印命令怎么传到显示芯片上,哪个芯片管脚怎么 变化,又怎么传到显 ...… 查看全部问答> |
|
希望参加《智能家居系统》的网友添加113586004群,在群内讨论问题。 [ 本帖最后由 zhaojun_xf 于 2010-7-31 10:28 编辑 ]… 查看全部问答> |
|
我使用串口与模块进行通信,来收发中文短信,并将串口InputMode属性设为文本方式。 当通过串口,来接收CDMA模块发送的汉字Unicode码时,发现,串口已将Unicode码以字节为单位转换为ASCII字符。 现在,我想要恢复这一过程,将ASCII字符还原为Unico ...… 查看全部问答> |
|
请教各位大大~~~~~关于ARM开发板的选择~~~~~~~~~~ 小弟最近想学RAM,之前一直用的51,不能说精通吧,至少基本的原理和应用算是比较熟悉了 现在想买块开发板,看上面置顶区里有个团购STM32的活动,不知道这块板子怎么样啊? 还有就是STM32在ARM里算是什么样的定位?适不适合像我这 ...… 查看全部问答> |
|
调试时出现的奇怪现象Program exit reached 如图,调试时出现的现象,右边绿色DebugBreak,下边蓝色部分Program exit reached,请问大家遇到过没有?怎么解决,现在烧不进程序了。… 查看全部问答> |






