目的:编写单片机,和主机通信,通信协议已知,但是主机无代码无法通过主机调试。
工具: 串口监控软件SerialMonitor.exe,单片机联通PL2303的通信板。
问题:
1,部分管脚不能灵活控制,甚至不能控制,一直高阻态状态。
解决:仔细查看头文件有说明:
#ifndef __STC15F2K60S2_H_
#define __STC15F2K60S2_H_
/
//注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为
// 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
//相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
/
故:只需初始化下对应管脚即可。
2,通信断开问题:和主机通信时每当返回字节“F1”,则和主机断开链接。
通过另外一个串口转USB设备,直接监控单片机串口发送和接收,一切正常,发送和接收字节正确。
但是通过主机串口监控软件查看,主机只接受了“F1”的前一个字节,之后不再接收任何字节,则串口通信中断状态。
又多测几次,发先有时发送的“F1”也可以接收,但是一段断开,则不需重启设备。
分析:由于通信板进行了正常的操作,发送了正确的字节,而主机却未收到;即通信板发送了“F1”,由于通信过程出现问题,导致主机接收不到起始位,故主机无法继续通信。怀疑通信板的PL2303部分问题。
再测:直接连接通信板单片机串口脚,用一串口转USB设备连接主机,启动后,通信中场,对于“F1”,未出现不接收情况。
确定硬件问题,明天查找硬件问题所在。
2015/3/3下午5点
仔细分析PL2303周围电路,尝试电源脚并个100uf电解电容后,测试通信正常,未出现通信中断问题。
哈哈,,感觉这次硬件及其代码的工作,在代码上错误率低了好多。。只是硬件上还有待加强!!!
2015/03/23
唉,上次弄的PL2303电路问题,通信中断。这次又被打回来了。测试后,的确在百次多的上分、投币操作后,断开连接,但是会自动连接上。
参考网上说的PL2303HX说明文档和电路,在PL2303输出的V3.3出并个0.1uf电容。再测试,换了2个板子,近万次按键操作,没发现问题。
这次应该结束了!!!