概述智能嵌入式物联网串口IO模块提供用户编程接口,增强应用灵活性,简化用户编程难度,缩短产品开发周期;用户无需了解IO板底层驱动,只需控制其中嵌入的逻辑和通信协议即可。
串口IO模块提供了keil开发环境下的函数库,功能强大,使用方便。开发者只需要了解一点C语言(提供详细的技术指导和咨询)就可以在我们的串口IO平台上开发所需的功能。
开关相关函数Write_Relay函数原型如下:
该函数需要被其他函数调用才能使用。
例子:
Write_Relay(0,1);//闭合第一个继电器的常开触点,打开常闭触点。
Write_Relay(1,0);//断开第二个继电器的常闭触点,打开常开触点。
使用时请注意传入的参数(通道、状态)不能有错。通道范围为0N,N为控制板上IO输出点数; status的值只能是0或1。当参数超出定义的范围时,函数将返回错误信息。
Read_Relay函数原型如下:
该函数需要被其他函数调用才能使用。
例子:
无符号字符温度=0;
temp=Read_Relay(0);//读取第一个通道的输出状态,并将结果赋给temp。
temp=Read_Relay(3);//读取第四通道的输出状态,并将结果赋给temp。
然后根据temp的值就可以判断当前IO输出状态:
如果温度为0,则常开触点打开,常闭触点闭合。
如果temp 为1,则常闭触点打开,常开触点闭合。
如果temp为2:传入的参数通道错误。
如果temp 为3:其他未知错误。
开关量输入相关函数Read_IN函数原型如下:
该函数需要被其他函数调用才能使用。
例子:
无符号字符温度=0;
temp=Read_IN(0);//读取第一个通道的输入状态,并将结果赋给temp。
temp=Read_Relay(3);//读取第四通道的输入状态,并将结果赋给temp。
然后根据temp的值就可以判断当前IO输入状态:
如果temp为0:该通道无信号输入(逻辑值为0,低电平)。
如果temp为1:该通道有信号输入(逻辑值为1,高电平)。
如果temp为2:传入的参数通道错误。
串口通信相关功能智能嵌入式物联网双串口IO控制板有RS232和RS485接口,这两个接口可以独立使用。
串口接收缓冲区和缓冲区大小在“ZQWL_IO_xBNRRx.h”文件中定义:
RS232_Init函数的函数原型如下:
该函数为RS232串口初始化函数。如果要使用RS232通讯功能,必须调用该函数初始化通讯相关参数。
例子:
注意,该函数的第三个参数奇偶校验必须是以下三种类型之一:
如果函数调用成功,返回值为0,否则返回相应的错误信息。
RS485_Init函数的函数原型如下:
该函数为RS485串口初始化函数。如果要使用RS485通讯功能,必须调用该函数初始化通讯相关参数。
例子:
注意,该函数的第三个参数奇偶校验必须是以下三种类型之一:
如果函数调用成功,返回值为0,否则返回相应的错误信息。
RS232_Send_Data函数的函数原型如下:
该函数为串口发送函数。在调用该函数之前,必须正确调用RS232_Init()函数。
示例1,直接发送字符串:
RS232_Send_Data('1234567890',10);
例2、发送数组中的数据:
无符号字符临时[10];
RS232_Send_Data(临时,10);
RS485_Send_Data函数的函数原型如下:
该函数为串口发送函数。在调用该函数之前,必须正确调用RS485_Init()函数。
示例1,直接发送字符串:
RS485_Send_Data('1234567890',10);
例2、发送数组中的数据:
无符号字符临时[10];
RS485_Send_Data(临时,10);
RS232_Recv_Handler函数原型如下:
该函数类似于中断函数,不能被其他函数调用。该函数必须在调用RS232_Init()函数后正确调用才能生效。建议您先在这个函数中复制buff中的数据,然后退出,在另一个函数中处理数据。
例子:
RS485_Recv_Handler函数原型如下:
该函数类似于中断函数,不能被其他函数调用。该函数必须在调用RS485_Init()函数后正确调用才能生效。建议您先在这个函数中复制buff中的数据,然后退出,在另一个函数中处理数据。
例子:
系统指示灯相关功能本系列控制板带有系统LED指示灯,可用于指示系统的运行状态。
RUN_LED_Toggle函数原型如下:
该函数实现了系统LED的状态翻转功能(调用后,原本是灭的则亮,原本亮的则灭)。
例子:
RUN_LED_Toggle(); //调用后,指示灯状态翻转。
RUN_LED_ON函数函数原型如下:
例子:
RUN_LED_ON();//点亮系统LED指示灯
RUN_LED_OFF函数函数原型如下:
例子:
RUN_LED_OFF();//关闭系统LED指示灯
延迟相关函数Delay_ms函数原型如下:
例子:
Delay_ms(500);//延迟500毫秒。
Delay_ms(2000);//延迟2000毫秒。
Delay_us函数原型如下:
例子:
Delay_us(500);//延迟500微秒。
Delay_us(999);//延迟999微秒。
定时器相关函数Timer_IRQHandler函数原型如下:
该函数是中断函数,不能被其他函数调用。每1ms中断一次。在此基础上,用户可以设计各种授时服务功能。例如设计一个10ms的定时服务函数:
看门狗相关函数IWDG_Init函数原型如下:
例子:
IWDG_Init(WD_1000MS); //设置看门狗定时器为1000毫秒。
IWDG_Init(WD_2000MS); //设置看门狗定时器为2000毫秒。
Feed_Dog函数的函数原型如下:
如果调用IWDG_Init(),则必须定期调用Feed_Dog()函数,且调用周期必须小于看门狗定时器设置值。否则,系统将继续重置。
建议在产品开发阶段不要使用看门狗功能,等产品发布时再添加该功能。
Flash相关功能该系列控制板均提供128字节的用户Flash空间,可用于存储控制板掉电后需要保存的参数,如波特率、地址码等。
User_Flash_Write函数的函数原型如下:
例子:
User_Flash_Read函数的函数原型如下:
例子:
系统异常相关函数HardFault_Handler函数原型如下:
当系统出现异常时,如指针操作不当、数组操作不当等,就会进入该中断。
系统复位相关函数MCU_Soft_Reset函数原型如下:
调用该函数后,系统将被重置。
CAN 相关功能只有具有CAN 通讯功能的控制板硬件版本才支持CAN 相关功能。
CAN相关数据结构定义:
CAN_Configuration函数在使用CAN通信之前必须正确调用该函数。
CAN_Recv_IRQHandler函数示例:
CAN_Send_Data函数主函数该函数为系统入口函数,提供如下示例:
模块编程开发环境本模块开发环境使用keil 5.10版本(其他版本未验证)。 keil的使用教程请参考其他开发文档。 keil5的安装包在MDK5.zip中。
“软件包”中有控制面板的keil5工程
打开“包裹”:
这是控制面板的项目文件。打开文件:
打开“项目”:
双击上图中的“pro”,通过keil软件打开工程。项目配置如下:
关于KEIL软件的使用请自行查找资料并学习。
工程编译完成后,会生成IO_APP.bin文件(路径:ZQWL_IO_APP(双串口+CAN)_V1.2\project\BIN):
如果是其他网络模块,需要将工程中的“xBXRA16_V1.0.lib”删除,然后添加对应的lib文件(路径为:ZQWL_IO_APP\App):
程序下载智能嵌入式串口IO模块的固件通过“智能嵌入式物联网串口继电器控制板固件升级工具”下载:
点击上图中的“浏览”,将编译好的IO_APP.bin文件加载到软件中,然后点击“打开”,点击“开始升级”即可下载固件。完成后会自动运行:
程序错误处理在调试程序时,不可避免地会出现程序错误。发生错误后,固件可能无法直接下载到模块中。在这种情况下,您需要执行以下步骤:
第一步:切断电源。
步骤2:将所有拨码开关拨至OFF状态(强制进入固件升级状态)。
第三步:开机。当看到模块的运行灯快速闪烁时,表明模块已进入固件下载模式。此时,您可以将固件下载到模块中。请注意,在此过程中,请确保拨码开关始终处于完全关闭位置。
需要注意的是,ZQWL的部分网络IO控制器还支持编程功能,如型号ZQWL-NET8880M、Smart IO。这些产品具有更强大的功能。此外,ZQWL新推出的Smart GW串口服务器还具有编程功能。该类型产品的通讯接口支持4G、网口、WIFI、CAN、RS485等,部分产品还具有IO扩展功能,性能更好。功能强大且更易于使用。