这段时间主要研究了该单片机的串口通信,经过对所有遇到问题的解决,最终掌握了DMA方式UART数据正确传输,为多频中波发射机控制器与上位机通讯打下了基础。
一、PIC32单片机基本知识概要
有了之前8位和16位单片机开发基础,对32位单片机的学习开发大有裨益,但是以下有关PIC32单片机相关的基础知识必不可少。
1、PIC32型单片机是32位单片机,有必要对其变量类型进行介绍,与8位和16位单片机变量类型不同,int型变量表示32位有符号整数(long和int是同义词),PIC32的RAM存储器存储整个整形变量的空间开销是8位或16位单片机的两倍;char整形变量为8位单字节变量,其数据范围从-128--+127,short变量为16位变量,其数据范围从-32768--+32767;float为32位变量,long double为64位变量。
2、单片机不能处理多线程任务,因此其灵魂是中断,中断机制的本质是中断由异步时间触发,没有任何函数调用中断服务例程,因此中断服务程序不可传递参数,也没有返回值,其他程序无法直接电泳中断服务函数;PIC32单片机外部中断源主要有:外部中断源包括串行异步通信接口UART中断、串行同步通信接口SPI/I2C中断、电平触发检测功能的外部引脚、并行主控端口中断等,内部中断源包括内部核心定时器、普通定时器、模数转换器、模拟比较器、实时时钟和日历模块、Flash控制器、软中断、DMA中断等。
每个中断源都有相应的控制位,通过按逻辑成组地分布于各特殊功能寄存器中,如中断使能位(中断源外围设备名称后加IE后缀)、中断标志位(后缀IF)、组优先级(后缀IP,共有7个,IP0-IP7,其中IP7最高)、子优先级。PIC32按优先级排序各中断源如下:
多重向量中断管理是为了使处理器的时间开销最小并能快速响应高优先级的中断,通过使用向量中断(vectored interrupt)和多寄存器集(multiple register set),尽管PIC32单片机拥有多达96个中断源,但受MIPS内核的限制,中断向量的个数最多只有64,因此PIC32的设计师将一些属于相同外围设备的中断成组地指向同一个向量。如下:
初始化函数采用多重向量形式,具体函数为INTEableSystemMultivectoredInt();
二、本项目的相关硬件电路
本项目采用的单片机型号为PIC32MX795F12L,其串口通信UART部分具体电路如下所示:
共使用单片机三个UART口,分别为UART1、UART4、UART5,采用RS422接口协议进行数据传输,因此所有信号由单片机输出后经以下电平转换电路进行差分输出和输入:
需要说明的是U5和U6芯片(MAX3491)的REN\和DE两个引脚,当前者为低电平后者为高电平时串口读写皆有效。
由于触摸屏上位机的通信口采用的是RS232接口,因此在422传输的末端采用了RS422到RS232的转接口,如下图所示:
需要注意的是该模块输入接口的TX口应与MAX3491芯片的RX口相接,二者需要共地。
与上位机串口通信的所有实验皆通过在PC机上采用串口调试助手完成,如下图所示:
文章评论(0条评论)
登录后参与讨论