任务 #4510
任务 #4508: OM-TH100A项目研发
2、软件开发
60%
描述
温湿度传感器软件功能:
RS485通信协议:读取温湿度、设置/读取通信地址、设置/读取波特率、简单的校准(0.1℃)
硬件相关:按键输入、液晶显示
历史记录
#1 由 韦 银剑 更新于 超过 2 年 之前
- 描述 已更新。 (diff)
- 类别 被设置为 软件
- % 完成 从 0 变更为 20
IIC问题:
问题描述:在读取sht20时,会出现高字节读到0xFF的数据,但是使用逻辑分析仪对波形进行分析,传输的数据是没有问题的。
问题分析:由于单片机使用5.0V,sht20是用3.0V,由于电平不比配,所以使用单片机IO的开漏功能,外挂一个上拉电阻接到3.0V上,进行电平转换。猜测是GPIO的开漏模式有问题,导致读取不到数据
问题处理方式:
1、刚开始是使用硬IIC进去驱动的,出现上述问题后,换了模拟IIC进行通信,现象还是有,但是相比硬IIC,出现0xFF次数和频率相对来说少了很多,但是不能解决问题
2、在读取数据时,之前的代码是一边读取,一边移位组成一个16bit的变量;改为,先使用缓存把2个字节的都都回来,在进行组合,可以解决问题。
这里需要注意的事:出问题的代码在STC15W4K56S4上是能用的,到这个STC32G12K128上就不能用,这个未有答案
#3 由 韦 银剑 更新于 超过 2 年 之前
- 文件 不显示时波形.jpg 不显示时波形.jpg 已添加
- 文件 显示时波形.jpg 显示时波形.jpg 已添加
- 文件 显示波形.jpg 显示波形.jpg 已添加
液晶残影问题:
通过示波器查看波形
对于1/3 BIAS 1/4 BUTY 3V的液晶
标准的电压为:
COMx的电压为:0.5V、2.5V、4.5V
SEGx的电压为:1.5V、3.5V
显示时压差为±3.0V,不显示时差压为±1.0V
经过测试得:(使用示波器测)
COMx的电压为:0.48V、2.4V、4.48V
SEGx的电压为:1.44V、3.36V
通过计算和测试
表1 不显示时电压点
电压1 | 电压2 | 电压3 | 电压4 | |
COMx电压 | 0.48 | 4.48 | 2.4 | 2.4 |
SEGx电压 | 1.44 | 3.36 | 1.44 | 3.36 |
计算压差(COMx - SEGx) | -1.04 | 1.12 | 0.96 | -0.96 |
实际压差(COMx - SEGx) | -1.04 | 1.2 | 0.96 | -0.96 |
表2 显示时电压点
电压1 | 电压2 | 电压3 | 电压4 | |
COMx电压 | 0.40 | 4.48 | 2.4 | 2.4 |
SEGx电压 | 3.36 | 1.44 | 1.44 | 3.36 |
计算压差(COMx - SEGx) | -2.96 | 3.04 | 0.96 | -0.96 |
实际压差(COMx - SEGx) | -2.88 | 3.04 | 0.96 | -0.96 |
从表1中看出,在,电压2位置,压差已经超过了±1,显示的残影应该是这里
下图黄色为COMx
蓝色为SEGx
紫色为COMx - SEGx (算法减,非直接测量COMx和SEGx引脚,因为示波器探头有电容,导致直接测试波形变形)
从图中看出COMx在变换方向(高阻输入和推挽输出)时,会产生毛刺,液晶对电压比较灵敏,也导致残影出现的原因
#5 由 韦 银剑 更新于 超过 2 年 之前
- 文件 IO驱动LCD电路-1_3BIAS.pdf IO驱动LCD电路-1_3BIAS.pdf 已添加
- 文件 用STC系列MCU的IO口直接驱动段码LCD-V2.pdf 用STC系列MCU的IO口直接驱动段码LCD-V2.pdf 已添加
这个是STC公开的资料
#6 由 韦 银剑 更新于 超过 2 年 之前
- % 完成 从 20 变更为 40
---------------------- 以下是外挂液晶驱动芯片记录(对应电路板版本为 V2.0) -------------------
使用外挂液晶驱动芯片,残影问题解决
本次记录:
1、移植外挂液晶驱动代码成功,编写了测试程序进行测试,让液晶一直循环显示所有的点
2、从OM-GSA-Q600移植Modbus文件过来,编译已经没问题,但未测试。移植过来导致edata内存超标了,整理了一下那些长数组,把他们移到xdata位置去
由于STC32G12K128单片机内部有2部分RAM,分别为edata(4K容量)和xdata(8K容量),默认是存储到edata中,但是使用时超出了4K的空间,导致keil5不能编译
目前处理为:把大的数组改存到xdata中,包含串口缓存数组、Modbus缓存数组
#19 由 韦 银剑 更新于 超过 2 年 之前
- 文件 6个温湿度串联通信测试.txt 6个温湿度串联通信测试.txt 已添加
串联6个温湿度(包含4个直驱+2个外挂驱动芯片)进行通信,设置地址为1/2/3/4/5/6
测试正常