基于天问block编译环境下ASRPRO语音芯片程序编写教程(三)串口通信,多线程模块,ADC篇

本篇教程将基于天问block内的官方范例代码讲解如何编写ASRPRO语音芯片程序以实现串口通信多线程模块编程和ADC数据读入功能。

1.串口通信

ASRPRO语音芯片具有3组可用串口(UART1对应PA2,PA3,UART2对应PA5,PA6,UART0
对应PB5,PB6),同时UART0默认是APSRPRO语音芯片的程序烧录口,故在使用时不会对这两个引脚复用其他功能。在后续程序中由于无需复用引脚且不需要外加新的串口硬件外设,故常用于测试程序,在应用时请尽可能只使用1,2两个串口且记得在使用前复用引脚

 如图在使用串口1进行通信前现将PA2和PA3复用为UART1_TX(输出串口)和UART2_RX(输入串口),其中引脚默认功能GPIO口为第一功能,括号内功能从第二开始计数,串口功能位于括号内第三,故串口功能为第四功能。在连接串口时TX接RX,RX接TX,GND接GND,电源按串口设备所需电压选择连接

串口通信范例程序如下:

在程序中使用串口是需现设置串口通信的波特率,在下方串口打印数据时可选择自动换行默认的不换行两种程序块,前者会在发送数据后自动发送/n进行换行,根据接收端需求进行选择。

在编程界面右上角有串口监视器选项,用于监视通过USB连接到电脑的串口,上述程序使用的是烧录程序的串口0进行通信,因此可以之间选择烧录程序时使用的USB线进行串口通信测试,使用UART1,2时可使用串口USB转换线连接单片机和电脑进行测试

串口监视器主要功能如下:

 通过串口监视器可对有串口输出功能的程序进行测试。

2.多线程模块

多线程模块作为ASRPRO语音芯片功能强大的特色之一,可以让多个任务在操作系统的调度下分时并行执行,多个线程之间使用消息队列进行通信。在一定程度上取代了中断和定时器的功能。在一定程度上可以看作多线程模块将单片机分成多块可预设内存的小单片机,分别执行各种不同的功能,而消息队列则类似于多个小单片机之间的串口通信,从而达到在同一时间执行多个不同功能的效果。

多线程模块范例程序如下:

 同时在多线程模块的程序块选项中有软件定时器可以独立线程的形式单独放置,使定时器内部的程序每隔一定时间运行一次,从而实现定时器的功能,使用前需现用相关程序启用定时器,使用结束后需使用程序停止定时器。而临界保护程序则能够让内部的程序在进行其他程序的任务调度时不被打断,正常运行。

 

3.ADC模块 

如同常规单片机上的ADC输入检测一样,ASPRPRO语音芯片上的ADC检测可将引脚外接的电流信号数据传入预设的变量之中,在后续的程序中使用,其中可检测的ADC电信号的分辨率为 12 位,返回值范围为 0~4095。只有PC_1,PC_2,PC_3,PC_4引脚具有ADC输入检测功能。

ADC输入检测范例程序如下: 

以上便是使用天问BLOCK软件编写ASERPRO语音芯片控制的单片机的基本操作教程,后续我将在发一篇文章讲解该芯片的常用外设的程序编写方法。

物联沃分享整理
物联沃-IOTWORD物联网 » 基于天问block编译环境下ASRPRO语音芯片程序编写教程(三)串口通信,多线程模块,ADC篇

发表评论