2.19 深大实验-串口通讯(USB-CDC发命令控制硬件UART1与UART2多机通讯)
2.19.1. 实验介绍 1、 熟悉串口1/UART1和串口2/UART2的通讯原理 2、 了解多机通讯原理 多机通讯的过程如下: ① 置全部从机的SM2=1,处于只接收地址帧状态。 ② 主机首先发送呼叫地址帧信息,将第9位TB8设置为1,以表示发送的是呼叫地址帧。 ③ 所有从机接收到呼叫地址帧后,各自将接收到的主机呼叫的地址与本机的地址相比较: Ø 若比较结果相等,则为被寻址从机,清除SM2=0,准备接收从主机发送的数据帧,直至全部数据传输完; Ø 若比较不相等,则为非寻址从机,仍维持SM2=1不变,对其后发来的数据帧不予理睬, 即接收到的数据帧内容不装入SBUF,不置位,RI=0,不会产生中断请求,直至被寻址为止。 ④ 主机在发送完呼叫地址帧后,接着发送一连串的数据帧,其中的第9位TB8=0,以表示为数据帧。 只有那些SM2位为0的从机(即已接收地址帧的从机)才会接收数据帧。 ⑤ 当主机改变从机通信时间则再发呼叫地址帧,寻呼其他从机, 原先被寻址的从机经分析得知主机在寻呼其他从机时,恢复其SM2=1,对其后主机发送的数据帧不予理睬。 上述过程均在软件控制下实现。 3、 熟悉Ai8051U实验箱原理图与AIapp-ISP系统软件的应用 4、 熟悉如何管理多文件项目
2.19.1.1. 认识实验箱 Ai8051U的实验箱下方正面图: S2开关:S2开关默认是“断”,本实验要将S2开关拨到“通”,使主控芯片UART1的P3.7/TxD_2与UART2的P4.2/RxD2_2联通。 UART1(主机)与UART2(从机)通讯时,LED11会闪烁。(详见S2开关原理图)
2.19.1.2. Keil环境下多文件项目管理说明 当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性。 Ø 比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。 Ø 一般建议是一个模块对应一个.c程序文件和一个.h头文件 Ø 模块的初始化函数以及相关的数据处理函数都在.c文件中实现 Ø 与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量 Ø 如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。 Ø 特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误 Ø 为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含: #ifndef XXXX #define XXXX ... #endif
|