1.同步通信和异步通信有什么区别?UART、SPI和I2C分别属于什么类型的通信方式?
-
同步通信:在同步通信中,发送方和接收方之间使用共享的时钟信号来同步数据传输。发送方按照时钟信号的边沿(上升沿或下降沿)将数据传输给接收方。同步通信通常需要在发送和接收端使用相同的时钟频率和时钟相位来确保数据的正确传输。常见的同步通信标准包括SPI(串行外设接口)和I2C(串行外设接口)。
-
异步通信:在异步通信中,发送方和接收方之间没有共享的时钟信号,数据传输是通过在数据中插入起始位、终止位和可选的校验位来实现的。发送方和接收方使用相同的波特率(数据传输速率)来保证数据的传输一致性。常见的异步通信标准包括UART(通用异步收发器)。
我的翻译:1.同步通信是需要时钟线的,数据在各个脉冲的上下沿或跳变时被发送或接收。确保通信正常的要求是,接收端与发送端使用的是相同的时钟频率与时钟相位。I2C,SPI都是同步通信。2.异步通信则是不需要时钟线的,通过在数据的起始与终止,插入标志位,然后再以一定的频率发送和接收,这种通信一般会出现一些错误信息,这也涉及到一些校验位数据丢弃数据验证的问题。如奇偶校验等。
下面是UART、SPI和I2C分别属于的通信方式:
-
UART(通用异步收发器):UART是一种异步通信协议,它使用起始位、数据位、可选的校验位和终止位来传输数据。UART常用于单片机和外部设备之间的串行通信,例如串口通信。UART通信没有时钟信号,通信双方使用相同的波特率来进行数据传输。
-
SPI(串行外设接口):SPI是一种同步通信协议,它使用共享的时钟信号和多个数据线(主线、从线和时钟线)来传输数据。SPI通信中,一个主设备与一个或多个从设备进行通信。SPI通信可以实现高速数据传输和全双工通信。
-
I2C(串行外设接口):I2C是一种同步通信协议,它使用共享的时钟信号和两条数据线(串行数据线SDA和串行时钟线SCL)来传输数据。I2C通信中,多个设备可以共享同一对数据线,每个设备通过唯一的地址进行识别。I2C通信可以实现多设备的串行通信和半双工通信。
2.简述通过I2C接口读取设备X的寄存器Y的值的过程
如果自己的答案都不想看,那就真的算是啰嗦了
起始信号----发送x设备地址---写标志----发送y寄存器地址----起始信号-----发送x设备地址---读标志位---读取数据----结束信号
3.中断是什么?请简述单片机中断处理的过程
从CPU主进程中断,跳到中断处理回调函数位置,当中断回调函数被执行完毕,回到中断位置继续执行
4.对于char型变量 a,写两段代码分别将 a的 bit 6置1和置0
a |= (1<<6)
a &=~ (1<<6)