logo资料库

LabVIEW串口四通道示波器.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 利用 stm32 作为下位机 ADC 采集数据,利用串口将采集到的数据发送到电脑上利用 LabVIEW 进行波形显示。 数据交流的基本操作如下:stm32 首先判断标志位 FLAG 是否为 1,满足则发送 stm32 发送一帧数据,并将标志位 FLAG 清零,LabVIEW 接收到数据后,处理数据,并返回一个 消息通知,即发送一个字符。Stm32 接收到该字符后,将 FLAG 置 1,如此循环,可以摆正 数据的正确性,不至于数据流的错位。 基本流程图如下: Y 接收到 W? 中断处理机制 FLAG=1 FLAG==1? N Y 发送一帧数据 FLAG 清零 LabVIEW 接收一帧数据 数据分离、显示 数据处理完毕,向下位 机发送字符 W 燕山大学里仁学院 QQ:931312252 1
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 Stm32 部分代码如下: int main(void) { Int LFAG=1; int i; /* 配置 USART1 */ USART1_Config(); /* 使能 DMA 模式*/ ADC1_Init(); NVIC_Configuration(); //以上代码为各种配置函数,在这里不重点介绍,如有疑问,可进一步交流 while(1) { if(FLAG == 1) { int i; for(i = 0;i < 4; i++) { ADC_ConvertedValueLocal[i]=(float)ADC_ConvertedValue[i]/4096*3.3; } printf("%6f%6f%6f%6f",ADC_ConvertedValueLocal[0],ADC_ConvertedValueLocal[1] ADC_ConvertedValueLocal[2],ADC_ConvertedValueLocal[3]); FLAG = 0; } } } Stm32 中断处理 LAbVIEW 发送来的数据如下: void USART1_IRQHandler(void) { u8 c; extern int FLAG; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { c=USART1->DR; if(c == 'W') FLAG = 1; { } } } 由以上可知,stm32 发送的一帧数据里面包含了四个通道的数据,通道一至通道四顺序 存放,一帧数据为 32 个字节。 燕山大学里仁学院 QQ:931312252 2
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 以下为 LAbVIEW 的处理程序: 串口配置部分: 串口波特率 56000,数据位 8,无校验,停止位 1。等到接收完 32 个字节后,将缓冲区 里面的数据读取出来,进行下一步处理。 将接受的 32 字节数据分离,数据后分别送入到示波器中进行显示,显示完毕后,想 stm32 燕山大学里仁学院 QQ:931312252 3
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 发送一个‘W’字符,告诉 stm32 数据已处理完毕,可以进行下一帧数据的发送。 串口接收到的数据是以 ASCII 码的形式过来的,因此需要进行转换,利用下图中的这 能 控 以 件 可 完 成 此 功 个 该控件的功能在帮助文件里可以看到,如图: 每 8 个字节为一个通道数据。至此,核心部分已经完成,前面板的显示界面如图: 同时通过偏移量可以完成数据的分离,即 燕山大学里仁学院 QQ:931312252 4
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 至此,整体完成。 整体程序图如下: 燕山大学里仁学院 QQ:931312252 5
LabVIEW 串口四通道示波器 沈亚非 2013/04/05 该文章可自由转载,请注明作者 燕山大学里仁学院 QQ:931312252 6
分享到:
收藏