客户常见问题解答
问题一:贵公司M104B与M104BPC均为UART串口模块,M104B 9位数据格式,M104BPC 8位数据格式,请问这两种通讯格式到底有什么不同?
解答:M104B 9位数据格式,实际上为串口标准协议中的11位异步传输模式:1位起始位,8位数据位,第9位地址/数据区分位,1位停止位。此种模式多用于多机通讯(如果用51核的单片机的话,则对应串口模模式3),�该11位数据传输协议规定,在主机发送模块地址的时候,第9位数据/地址区分位必须强制为1,而在发送地址之外的数据时,第9位数据/地址区分位必须强制为0,主机接收从机数据的时候第九位数据/地址区分位必须强制为0.
因此,对于模块M104B以PC机发送一条寻卡指令为例:地址00 00(默认)+数据03 20 00 23,在发送地址00 00的前必须将串口设置为:波特率19200, 1位起始位, 8位数据位,第9位为MARK(也即强制为1),1位停止位,并选择HEX,然后(16进制)发送,发送成功后,M104B模块内部会与自身的模块地址00 00进行对比,地址比对成功后,模块内部进入接收数据状态,此时PC机需要更改串口设置为:波特率19200,1位起始位,8位数据位,第9位为SPACE(也即强制为0),1位停止位,然后HEX,(16进制)发送数据,03 20 00 23,M104B在接收到03 20 00 23后会对其解析,知道其为寻卡指令,然后返回正确的卡号,此时准备接收的PC机串口设置应为:波特率19200,1位起始位,8位数据位,第9位为SPACE(也即强制为0),1位停止位(注:M104B连接PC机的时候需要用MAX232这样的电平芯片进行UART到RS232的电平转换,否则会烧坏模块串口。)
M104BPC 8位数据格式,实际上为串口协议中的10位异步传输模式:1位起始位,8位数据位,无奇偶校验位,1位停止位,因此,在该通讯模式下发送具体模块指令数据之前仅需设置一次串口通讯协议即可,设置如下:波特率 19200,1位起始位,8位数据位,无奇偶校验位,1位停止
同样以PC机发送一条连接指令为例:02 00 00 04 15 10 03 1C 03,在发送此数据之前仅需设置一下串口模式为1位起始位,8位数据位,无奇偶校验位,1位停止位即可(注:M104B连接PC机的时候需要用MAX232这样的电平芯片进行UART到RS232的电平转换,否则会烧坏模块串口。)
问题二:贵公司M104A与M104C在IIC通讯的时候,为什么总是通讯不成功,发送指令后看不到模块的ACK确认信号?
解答:出现此问题的原因大多为主处理器(与我们模块的通讯的处理器)频率较高所致,调整方法为加长数据发送、接收时每一位数据间隔时间,等待模块ACK信号时,尽量多等待一些时间。