当前位置:文档之家› RC522 调试笔记

RC522 调试笔记

RC522 调试笔记
RC522 调试笔记

RC522调试笔记

任永

2011年1月11日晴

准备工作

1、阅读文档,了解RC522的UART工作方式。

2、初始化RC522为UART工作方式。

3、初始化化RC522

4、查看初始化结果是否成功

5、示波器测试PCB发送天线参数。

寄存器位行为描述

UART读数据帧结构

UART写数据帧结构

命令概要

命令概要

命令命令码行为描述

空闲0000无其它多余动作,取消当前命令的执行

存储0001存储25个字节到内部缓冲区

产生随机数ID0010生成一个10字节的随机ID号

计算CRC码0011激活CRC协处理器或执行自检

发送0100发送FIFO缓冲区中数据

无命令0111没有命令变化,可以用来修改,而不会影响命令CommandReg寄存器。接收1000激活接收电路

收发器1100发送FIFO缓冲区中数据传输到天线,并自动激活后传输接收机。——1101保留,将来使用

MFIFARE认证1110执行MIFARE标准认证作为阅读器

软复位1111复位MFRC522

2011年1月12日晴

初步调试

使用串口调试助手

1、选择使用串口号;

2、设置波特率9600,起始位1bit,数据位8bit,停止位1bit,无奇偶效验,无流控制位;

3、设置发送数据格式十六进制(HEX),接收数据显示格式十六进制。

4、打开串口。

5、填写发送数据(HEX格式)。

6、发送;

7、观察返回数据(HEX格式)

8、示波器测试各个测试点。

8.1、天线TX1,TX2,低通滤波电路,匹配电路

9、测试捕获卡片距离。

测试结果:

可以在2cm内捕获卡片;

缺陷:捕获卡片距离太近,需要提升捕获距离。

2011年1月13日阴

调试捕获卡片距离,获取卡片数据

1、示波器测试各个测试点。

8.1、天线TX1,TX2,低通滤波电路,匹配电路

2、调整天线匹配电容参数

3、改变天线的发磁场方向。

结果:卡片捕获距离提升到4cm以上;

缺陷:对低质量卡片捕获距离还是不够高,在3cm左右;需要调整。

下一步工作计划:

1、绘制RC522工作流程图

2、编写RC522流程函数代码

3、调试RC522阅读卡片速度能力

4、与系统软件进行合成(合并)调试。

R C522工作流程

R C522 初始化流程Array

RC522工作流程图RC522初始化流程图

任永

RC522调试笔记

R C 522读卡流程

RC522读卡流程图RC522写卡流程图

2011年1月14日阴

2011年1月17日雨夹雪

分析RC522操作数据

打开串口:初始化RC522

4[00000000]WRITE Data:8C【读命令,0x0C寄存器地址。

杂项控制寄存器。复位初始值0x10(0x10)】

5[00000006]READ Data:10【应答,读0x0C寄存器中数据】

6[00000038]WRITE Data:01【写命令,写0x01寄存器地址。

启动和停止命令执行寄存器。复位初始值0x20(0x20)】

7[00000038]READ Data:C0【应答,写0x01寄存器命令】

8[00000038]WRITE Data:0F【写数据,写0x0F数据到0x01寄存器。复位RC522。】

9[00000045]WRITE Data:0C【写命令,写0x0C寄存器地址。

杂项控制寄存器,复位初始值0x10(0x10)】

10[00000045]READ Data:86【应答,写0x0C寄存器命令】

11[00000045]WRITE Data:10【写数据,写0x10数据到0x0C寄存器。恢复复位初始值0x10】

12[00000045]WRITE Data:11【写命令,写0x11寄存器地址。

定义为发送和接收的一般模式设置。复位初始值0x20(0x20)】13[00000046]READ Data:C4【应答,写0x11寄存器命令】

14[00000046]WRITE Data:3F【写数据,写0x3F数据到0x11寄存器。恢复复位初始值0x3F】

15[00000046]WRITE Data:23【写命令,写0x23寄存器地址。

保留寄存器,复位初始值0x00(0x88)】

16[00000046]READ Data:E4【应答,写0xE4寄存器命令】

17[00000046]WRITE Data:00【写数据,写0x00(0x88)数据到0x23寄存器。】

18[00000046]WRITE Data:25【写命令,写0x25寄存器地址。

保留寄存器,复位初始值0x80(0x87)】

19[00000047]READ Data:C9【应答,写0xC9寄存器命令】

20[00000047]WRITE Data:80【写数据,写0x80(0x87)数据到0x25寄存器。】

21[00000047]WRITE Data:36【写命令,写0x36寄存器地址。

自动测试寄存器,复位初始值0x40(0x40)】

22[00000047]READ Data:9B【应答,写0x9B寄存器命令】

23[00000047]WRITE Data:40【写数据,写0x40数据到0x25寄存器。】

24[00000047]WRITE Data:15【写命令,写0x15寄存器地址。

控制传输设置寄存器,复位初始值0x40(0x00)】

25[00000048]READ Data:C5【应答,写0xC5寄存器命令】

26[00000048]WRITE Data:40【写数据,写0x40数据到0x15寄存器。】

控制传输设置寄存器,复位初始值0x40(0x00)】28[00000048]READ Data:40【应答,0x15寄存器中数据】

16BIT定时器重载寄存器,低8BIT。复位初始值0x00(0x00)】30[00000048]READ Data:CB【应答,写0xCB寄存器命令】

31[00000048]WRITE Data:0A【写数据,写0x0A数据到0x2D寄存器。】

32[00000048]WRITE Data:2C【写命令,写0x2C寄存器地址。

16BIT定时器重载寄存器,高8BIT。复位初始值0x00(0x00)】33[00000049]READ Data:96【应答,写0x96寄存器命令】

34[00000049]WRITE Data:00【写数据,写0x00数据到0x2C寄存器。】

35[00000049]WRITE Data:94【读命令,写0x14寄存器地址。

控制天线的驱动脚TX1和TX2的逻辑行为寄存器,复位初始值0x80(0x80)】36[00000049]READ Data:80【应答,0x14寄存器中数据】

37[00000049]WRITE Data:14【写命令,写0x14寄存器地址。

控制天线的驱动脚TX1和TX2的逻辑行为寄存器,复位初始值0x80(0x80)】38[00000050]READ Data:8A【应答,写0x14寄存器命令】

39[00000050]WRITE Data:83【写数据,写0x83数据到0x14寄存器】

40[00000050]WRITE Data:8C【读命令,写0x0C寄存器地址。

杂项控制寄存器,复位初始值0x10(0x10)】

41[00000050]READ Data:10【应答,读0x0C寄存器中数据】

42[00000050]WRITE Data:0C【写命令,写0x0C寄存器地址。

杂项控制寄存器,复位初始值0x10(0x10)】

43[00000051]READ Data:86【应答,写0x0C寄存器命令】

44[00000051]WRITE Data:50【写数据,写0x50数据到0x0C寄存器】

45[00000051]WRITE Data:84【读命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

46[00000051]READ Data:15【应答,读0x04寄存器中数据】

47[00000051]WRITE Data:04【写命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

48[00000051]READ Data:82【应答,写0x04寄存器命令】

49[00000051]WRITE Data:01【写数据,写0x01数据到0x04寄存器】

50[00000051]WRITE Data:2B【写命令,写0x2B寄存器地址。

定时器预分频器设置寄存器。复位初值0x00(0x00)】

51[00000052]READ Data:E5【应答,写0x2B寄存器命令】

52[00000052]WRITE Data:A5【写数据,写0xA5数据到0x2B寄存器】

定时器模式设置寄存器。复位初值0x00(0x00)】

54[00000052]READ Data:95【应答,写0x2A寄存器命令】

55[00000052]WRITE Data:82【写数据,写0x82数据到0x2A寄存器】

56[00000052]WRITE Data:01【写命令,写0x01寄存器地址。

启动和停止命令执行寄存器。复位初始值0x20(0x20)】

57[00000053]READ Data:C0【应答,写0x01寄存器命令】

58[00000053]WRITE Data:00【写数据,写0x0F数据到0x01寄存器。RC522准备好运行。】

激活卡片

///请求

1[00001840]WRITE Data:88【读命令,写0x08寄存器地址。

接收、发送和数据模式检测状态寄存器。复位初始值0x00(0x00)】2[00001840]READ Data:00【应答,读取0x08寄存器中数据】

3[00001840]WRITE Data:08【写命令,写0x08寄存器地址。

接收、发送和数据模式检测状态寄存器。复位初始值0x00(0x00)】4[00001841]READ Data:84【应答,写0x08寄存器命令】

5[00001841]WRITE Data:00【写数据,写0x00数据到0x08寄存器。】

6[00001841]WRITE Data:0E【写命令,写0x0E寄存器地址。

第一位碰撞检测到的RF接口寄存器,复位初值0x00(0b101xxxxx)】7[00001841]READ Data:87【应答,写0x0E寄存器命令】

8[00001841]WRITE Data:80【写数据,写0x80数据到0x80寄存器。】

9[00001841]WRITE Data:92【读命令,写0x12寄存器地址。

发送数据波特率寄存器,复位初值0x00(0x00)】

10[00001841]READ Data:00【应答,读0x12寄存器中数据】

11[00001841]WRITE Data:12【写命令,写0x12寄存器地址。

发送模式寄存器(定义数据发送波特率),复位初值0x00(0x00)】12[00001842]READ Data:89【应答,写0x12寄存器命令】

13[00001842]WRITE Data:00【写数据,写0x00数据到0x12寄存器】

14[00001842]WRITE Data:93【读命令,写0x13寄存器地址。

接收模式寄存器(定义数据接收波特率),复位初值0x00(0x00)】15[00001842]READ Data:00【应答,读取0x13寄存器中数据】

16[00001842]WRITE Data:13【写命令,写0x13寄存器地址。

接收模式寄存器(定义数据接收波特率),复位初值0x00(0x00)】17[00001843]READ Data:E2【应答,写0x13寄存器命令】

18[00001843]WRITE Data:00【写数据,写0x00数据到0x13寄存器】

19[00001843]WRITE Data:0D【写命令,写0x0D寄存器地址。

位元导向寄存器,复位初始值0x00(0x00)】

20[00001843]READ Data:C3【应答,写0x0D寄存器命令】

21[00001843]WRITE Data:07【写数据,写0x07数据到0x0D寄存器】

22[00001843]WRITE Data:2D【写命令,写0x2D寄存器地址。

16BIT定时器重载寄存器,低8BIT。复位初始值0x00(0x00)】23[00001844]READ Data:CB【应答,写0x2D寄存器命令】

24[00001844]WRITE Data:04【写数据,写0x04数据到0x2D寄存器。】

16BIT定时器重载寄存器,高8BIT。复位初始值0x00(0x00)】26[00001844]READ Data:96【应答,写0x2C寄存器命令】

27[00001844]WRITE Data:00【写数据,写0x04数据到0x2C寄存器。】

28[00001844]WRITE Data:04【写命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

29[00001845]READ Data:82【应答,写0x04寄存器命令】

30[00001845]WRITE Data:7F【写数据,写0x7F数据到0x04寄存器。】

31[00001845]WRITE Data:05【写命令,写0x05寄存器地址。

中断标志位寄存器2。复位初值0x00(0x00)】

32[00001845]READ Data:C1【应答,写0x05寄存器命令】

33[00001845]WRITE Data:7F【写数据,写0x7F数据到0x05寄存器】

34[00001845]WRITE Data:0A【写命令,写0x0A寄存器地址。

FIFO存储字节指示寄存器。复位初值0x00(0x00)】

35[00001846]READ Data:85【应答,写0x85寄存器命令】

36[00001846]WRITE Data:80【写数据,写0x80数据到0x0A寄存器】

37[00001846]WRITE Data:81【读命令,写0x01寄存器地址。

启动和停止命令执行寄存器。复位初始值0x20(0x20)】

38[00001846]READ Data:00【应答,读0x01寄存器中数据】

39[00001846]WRITE Data:01【写命令,写0x01寄存器地址。

启动和停止命令执行寄存器。复位初始值0x20(0x20)】

40[00001846]READ Data:C0【应答,写0x01寄存器命令】

41[00001846]WRITE Data:0C【写数据,写0x0C数据到0x01寄存器。RC522准备好运行。】

42[00001846]WRITE Data:82【读命令,写0x02寄存器地址。

启用和禁用中断请求控制寄存器1,复位初始值0x80(0x80)】43[00001847]READ Data:80【应答,读0x02寄存器中数据】

44[00001847]WRITE Data:02【写命令,写0x02寄存器地址。

启用和禁用中断请求控制寄存器1,复位初始值0x80(0x80)】45[00001847]READ Data:81【应答,写0x02寄存器命令】

46[00001847]WRITE Data:A1【写数据,写0xA1数据到0x02寄存器】

47[00001847]WRITE Data:83【读命令,写0x03寄存器地址。

启用和禁用中断请求控制寄存器2,复位初始值0x00(0x00)】48[00001848]READ Data:00【读数据,读0x03寄存器中数据】

启用和禁用中断请求控制寄存器2,复位初始值0x00(0x00)】50[00001848]READ Data:E0【应答,写0x03寄存器命令】

51[00001848]WRITE Data:00【写数据,写0x00数据到0x03寄存器】

52[00001848]WRITE Data:09【写命令,写0x09寄存器地址。

输入、输出64字节FIFO缓存寄存器,复位初始值random(random)】53[00001849]READ Data:C2【应答,写0x09寄存器命令】

54[00001849]WRITE Data:26【写数据,写0x26数据到0x09寄存器】

55[00002698]WRITE Data:8D【读命令,写0x0D寄存器地址。

调整位的帧格式寄存器,复位初始值0x00(0x00)】

56[00002698]READ Data:07【应答,读0x0D寄存器中数据】

57[00002698]WRITE Data:0D【写命令,写0x0D寄存器地址。

调整位的帧格式寄存器,复位初始值0x00(0x00)】

58[00002699]READ Data:C3【应答,写0x0D寄存器命令】

59[00002699]WRITE Data:87【写数据,写0x87数据到0x0D寄存器】

60[00002699]WRITE Data:84【读命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

61[00002699]READ Data:64【应答,读0x04寄存器中数据】

62[00002699]WRITE Data:85【读命令,写0x05寄存器地址。

中断标志位寄存器2。复位初值0x00(0x00)】

63[00002700]READ Data:00【应答,读0x05寄存器中数据】

64[00002700]WRITE Data:82【读命令,写0x02寄存器地址。

启用和禁用中断请求控制寄存器1,复位初始值0x80(0x80)】65[00002700]READ Data:A1【应答,读0x02寄存器中数据】

66[00002700]WRITE Data:02【写命令,写0x02寄存器地址。

启用和禁用中断请求控制寄存器1,复位初始值0x80(0x80)】67[00002700]READ Data:81【应答,写0x02寄存器命令】

68[00002700]WRITE Data:80【写数据,写0x80数据到0x02寄存器】

69[00002700]WRITE Data:83【读命令,写0x03寄存器地址。

启用和禁用中断请求控制寄存器2,复位初始值0x00(0x00)】70[00002701]READ Data:00【读数据,读0x03寄存器中数据】

71[00002701]WRITE Data:03【写命令,写0x03寄存器地址。

启用和禁用中断请求控制寄存器2,复位初始值0x00(0x00)】72[00002701]READ Data:E0【应答,写0x03寄存器命令】

73[00002701]WRITE Data:00【写数据,写0x00数据到0x03寄存器】

------------------------------------------------------------------------------------------------74[00002701]WRITE Data:8A【读命令,写0x0A寄存器地址。

FIFO存储字节指示寄存器。复位初值0x00(0x00)】

75[00002702]READ Data:02【读数据,读0x0A寄存器中数据。】

76[00002702]WRITE Data:8C【读命令,写0x0C寄存器地址。

杂项控制寄存器,复位初始值0x10(0x10)】

77[00002702]READ Data:10【读数据,读0x0C寄存器中数据。】

78[00002702]WRITE Data:86【读命令,写0x06寄存器地址。

错误标志寄存器。复位初始值0x00(0x00)】

79[00002703]READ Data:00【读数据,读0x06寄存器中数据。】

80[00002703]WRITE Data:89【读命令,写0x09寄存器地址。

输入、输出64字节FIFO缓存寄存器,复位初始值random(random)】81[00002703]READ Data:04【读数据,读0x09寄存器中数据。】

82[00002703]WRITE Data:89【读命令,写0x09寄存器地址。

输入、输出64字节FIFO缓存寄存器,复位初始值random(random)】83[00002703]READ Data:00【读数据,读0x09寄存器中数据。】

84[00002703]WRITE Data:04【写命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

85[00002704]READ Data:82【应答,写0x04寄存器命令】

86[00002704]WRITE Data:20【写数据,写0x20数据到0x04寄存器。】

87[00002704]WRITE Data:05【写命令,写0x05寄存器地址。

中断标志位寄存器2。复位初值0x00(0x00)】

88[00002704]READ Data:C1【应答,写0x05寄存器命令】

89[00002704]WRITE Data:00【写数据,写0x00数据到0x05寄存器】

90[00002704]WRITE Data:0A【写命令,写0x0A寄存器地址。

FIFO存储字节指示寄存器。复位初值0x00(0x00)】

91[00002705]READ Data:85【应答,写0x85寄存器命令】

92[00002705]WRITE Data:80【写数据,写0x80数据到0x0A寄存器】

93[00002705]WRITE Data:04【写命令,写0x04寄存器地址。

中断标志位寄存器1。复位初值0x04(0x14)】

94[00002705]READ Data:82【应答,写0x04寄存器命令】

95[00002705]WRITE Data:01【写数据,写0x01数据到0x04寄存器。】

96[00002705]WRITE Data:0D【写命令,写0x0D寄存器地址。

调整位的帧格式寄存器,复位初始值0x00(0x00)】97[00002706]READ Data:C3【应答,写0x0D寄存器命令】

98[00002706]WRITE Data:00【写数据,写0x00数据到0x0D寄存器】

//参考防冲撞协议

99[00001856]WRITE Data:92

100[00001857]READ Data:00

101[00001857]WRITE Data:12

102[00001857]READ Data:89

103[00001857]WRITE Data:00

104[00001857]WRITE Data:93

105[00001858]READ Data:00

106[00001858]WRITE Data:13

107[00001858]READ Data:E2

108[00001858]WRITE Data:00

109[00001858]WRITE Data:0E

110[00001859]READ Data:87

111[00001859]WRITE Data:00

112[00001859]WRITE Data:0D

113[00001859]READ Data:C3

114[00001859]WRITE Data:00

115[00001859]WRITE Data:2D

116[00001859]READ Data:CB

117[00001859]WRITE Data:64

118[00001860]WRITE Data:2C

119[00001860]READ Data:96

120[00001860]WRITE Data:00

121[00001860]WRITE Data:04

122[00001860]READ Data:82

123[00001860]WRITE Data:7F

124[00001860]WRITE Data:05

125[00001861]READ Data:C1

126[00001861]WRITE Data:7F

127[00001861]WRITE Data:0A 128[00001861]READ Data:85 129[00001861]WRITE Data:80

130[00001861]WRITE Data:81 131[00001862]READ Data:0C

132[00001862]WRITE Data:01 133[00001862]READ Data:C0 134[00001862]WRITE Data:0C

135[00001862]WRITE Data:82 136[00001863]READ Data:80

137[00001863]WRITE Data:02 138[00001863]READ Data:81 139[00001863]WRITE Data:A1

140[00001863]WRITE Data:83 141[00001864]READ Data:00

142[00001864]WRITE Data:03 143[00001864]READ Data:E0 144[00001864]WRITE Data:00 145[00001864]WRITE Data:09 146[00001864]READ Data:C2 147[00001864]WRITE Data:93

148[00001864]WRITE Data:09 149[00001865]READ Data:C2 150[00001865]WRITE Data:20

151[00001865]WRITE Data:8D 152[00001865]READ Data:00

153[00001865]WRITE Data:0D 154[00001866]READ Data:C3 155[00001866]WRITE Data:80

156[00001866]WRITE Data:84 157[00001866]READ Data:64

158[00001866]WRITE Data:85

160[00001867]WRITE Data:82 161[00001867]READ Data:A1

162[00001867]WRITE Data:02 163[00001867]READ Data:81 164[00001867]WRITE Data:80

165[00001867]WRITE Data:83 166[00001868]READ Data:00

167[00001868]WRITE Data:03 168[00001868]READ Data:E0 169[00001868]WRITE Data:00

170[00001868]WRITE Data:8A 171[00001869]READ Data:05

172[00001869]WRITE Data:8C 173[00001869]READ Data:10

174[00001869]WRITE Data:86 175[00001870]READ Data:00

176[00001870]WRITE Data:89 177[00001870]READ Data:4E

178[00001870]WRITE Data:89 179[00001870]READ Data:E8

180[00001870]WRITE Data:89 181[00001871]READ Data:04

182[00001871]WRITE Data:89 183[00001871]READ Data:20

184[00001871]WRITE Data:89 185[00001871]READ Data:82

186[00001871]WRITE Data:04 187[00001872]READ Data:82 188[00001872]WRITE Data:20

190[00001872]READ Data:C1 191[00001872]WRITE Data:00

192[00001872]WRITE Data:0A 193[00001873]READ Data:85 194[00001873]WRITE Data:80

195[00001873]WRITE Data:04 196[00001873]READ Data:82 197[00001873]WRITE Data:01

198[00001873]WRITE Data:0D 199[00001874]READ Data:C3 200[00001874]WRITE Data:00

201[00001874]WRITE Data:0D 202[00001874]READ Data:C3 203[00001874]WRITE Data:00

204[00001874]WRITE Data:0E 205[00001875]READ Data:87 206[00001875]WRITE Data:80

///选卡【选择卡片】

207[00001875]WRITE Data:92 208[00001875]READ Data:00

209[00001875]WRITE Data:12 210[00001876]READ Data:89 211[00001876]WRITE Data:80

212[00001876]WRITE Data:93 213[00001876]READ Data:00

214[00001876]WRITE Data:13 215[00001876]READ Data:E2 216[00001876]WRITE Data:80

217[00001876]WRITE Data:2D 218[00001877]READ Data:CB 219[00001877]WRITE Data:14

221[00001877]READ Data:96 222[00001877]WRITE Data:00

223[00001877]WRITE Data:04 224[00001878]READ Data:82 225[00001878]WRITE Data:7F

226[00001878]WRITE Data:05 227[00001878]READ Data:C1 228[00001878]WRITE Data:7F

229[00001878]WRITE Data:0A 230[00001879]READ Data:85 231[00001879]WRITE Data:80

232[00001879]WRITE Data:81 233[00001879]READ Data:0C

234[00001879]WRITE Data:01 235[00001880]READ Data:C0 236[00001880]WRITE Data:0C

237[00001880]WRITE Data:82 238[00001880]READ Data:80

239[00001880]WRITE Data:02 240[00001881]READ Data:81 241[00001881]WRITE Data:A1

242[00001881]WRITE Data:83 243[00001881]READ Data:00

244[00001881]WRITE Data:03 245[00001881]READ Data:E0 246[00001881]WRITE Data:00

247[00001881]WRITE Data:09 248[00001882]READ Data:C2 249[00001882]WRITE Data:93

250[00001882]WRITE Data:09 251[00001882]READ Data:C2 252[00001882]WRITE Data:70

GPS调试笔记

.. GPS调试笔记 调试GPS过程是在老师指导下完成的,大部分功能是我们在寒假期间调试出来的,在调试的过程中困难重重,还是具体介绍我们调试的过程吧。 刚开始我们买回来了GPS模块型号是ST-200看着模块介绍手册,就想着把硬件电路搭建起来,利用实验室师兄刚刚制作的一个单片机最小系统板和GPS模块进行通讯,开始想的很简单就是数据的接收和显示过程,GPS模块是一个较小的原件携带方便如图一GPS 模块。 (图一GPS模块) GPS模块一共就有六个引脚如图二。 (图二GPS引脚图) 这样连接起来也简单方便,下面对管脚进行一下介绍1:接地GND,2:电源VCC,3:输入TXA,4:输出RXA,5:预备电源V_BAT,6:脚可以悬空,就是这么一个简单的模

块就可以接收卫星信号了,开始是用串口采集数据看接收的数据是什么形式的,虽然在很多资料中已经看到过这方面数据的介绍,但是还要自己验证一下才好。 起初的时候由于读写信号线没能正确连接,导致数据不能通过串口传输过来,通过很长时间查找,也问了很多人最后是老师发现读写信号线出现了问题,这个小问题可让我查了好久才解决的,在下面的调试过程中自己也是从这里总结出来了经验,把每一步慢慢做好不能急功近利。下面具体说一下这个问题:问题就是在单片机、max232、GPS模块这三者的读写信号线之间的矛盾。开始自己是按与单片机通讯来设置的线路,但是如果与单片机通讯,那么GPS和单片机的读写信号就应该交换,但是这样就不会与232进行通讯了,只有和单片机的读写信号线对应连接就可以了。这个问题虽然解决了,但是想象中的数据怎么没有那,在实验室屋里就是怎么调也没有数据,还是老师指点这GPS是必须得在外边使用,在有建筑物遮挡的情况下是不能接收到信号的,这时又有新问题出现了没有电源啊,实验室里电源是好办了,但是在空旷的操场那里有电源啊,最后还是我的笔记本解决了这个问题(在后来又换上了电池),用USB供电就轻松解决了电力问题,拿着笔记本在拿上两个板凳就到外边做实验是,今年的雪特别大,那几天还偏赶上是大雪纷飞的时候,在雪中我们做着实验首先通过串口接收数据。如图三串口界面截图:

lwip环回调试笔记

没有上系统,lwip裸奔,raw/callback方式调用UDP函数通过环回接口自发自收。 首先是移植,用户需要编写的文件有cc.h,perf.h,cpu.h,lwipopts.h,参考的是st官方代码和lwip的移植说明。 然后stm32的时钟以及串口再加一个定时器配置好,串口输出调试信息,定时器周期更新ARP table和维护TCP slow/fast timer,最重要的是这里用到的环回接口需要周期性调用netif_poll这个函数,把环回接口中收到的数据递交给IP层。 用伪代码描述一下出错的代码: Stm32时钟外设初始化; Lwip初始化; 建立一个UDP客户端,绑定127.0.0.1,连接至UDP服务器; 建立一个UDP服务器,绑定127.0.0.1;连接至UDP客户端; 申请内存, 把数据填至内存; While{ 周期调用tcp_tmr(); 周期调用etharp_tmr(); 周期发送数据udp_sendto(); netif_poll(); } 结果是第一次发送和接收都正常,第二次开始就出错,经跟踪,到第二次发送前发现错误原因。首次发送,接收后申请的内存已释放,再次发送前必须再次申请内存且填充用户数据; 改正后 Stm32时钟外设初始化; Lwip初始化; 建立一个UDP客户端,绑定127.0.0.1,连接至UDP服务器; 建立一个UDP服务器,绑定127.0.0.1;连接至UDP客户端; While{

周期调用tcp_tmr(); 周期调用etharp_tmr(); 周期申请内存并填充数据,然后用周期发送数据udp_sendto()发送数据; netif_poll(); } 至此数据可以正常收发,但是还是高兴早了,程序跑了一会就停了,重启跑了一会又停了,发现每次都是收发223次后停止,开始怀疑是不是内存泄露了,排查中... 在周期申请内存后,检查是否申请成功,不成功打印输出信息;(单片机初学者没上过系统和协议栈,没有用过动态内存分配,这点常识没有,好羞愧。)果不其然,224次输出memory error 找到问题所在了,就是内存泄露,但是哪里泄露呢?在Udp的接收处理回调函数里最后释放pbuf了呀,怎么回事,排查中... 开始试探:每一次发送11个字节223次时内存不足; 每一次发送196个字节75次时内存不足; 一觉醒来,已经是第二天早上,用keil仿真,看内存区,的确是被占的满满的,开始跟踪调试... 有重大发现,netif_loop_output该函数会申请内存,并把用户数据赋值到其中,而后递交给IP进而UDP,最终至用户,我之前在回调函数里只是把netif_loop_output申请的内存给释放了,而我自个发送前申请的内存未释放,好了改代码如下: Stm32时钟外设初始化; Lwip初始化; 建立一个UDP客户端,绑定127.0.0.1,连接至UDP服务器; 建立一个UDP服务器,绑定127.0.0.1;连接至UDP客户端; While{ 周期调用tcp_tmr(); 周期调用etharp_tmr(); 周期申请内存并填充数据,然后用周期发送数据udp_sendto()发送数据,

7031变频器调试笔记

变频器调试笔记 要求: 变频器型号:6SE7031-0EE60输出额定电流为92A. 制动单元:6SE7028-0EA87-2DA0 制动电阻:6SE7028-0ES87-2DC0 功能:主轴要求具有正转。反转。正点。反点。 模拟给定(AI1=±10V) 步骤: 首先:P60=5 选择“系统参数”菜单 P71=380V 装置输入电压V P100=3 无测速机的速度控制(F控制) P101=380V 电机额定电压V P102= 75.6A 电机额定电流A P107=50Hz 电机额定频率Hz P109=3 电机极对数(自动计算) P115=1 计算电机数据 P352=200Hz 最大频率 P383=0 电机发热时间常数S(<100S!去除监控

P452=100 正向旋转时最大频率或速度% P453=—100 反向旋转时最大频率或速度% P60=1 回到参数菜单(以上参数设置不合理将导致 故障,错误的设定参数被写入r949 P462=10秒从静止加速到最大频率(P352)的时间 P464=10秒从最大频率(P352)减速到静止的时间 P465=0 减速时间单位:秒 装置优化:P115=2 计算电机模型“静止状态电机辩识” P115=4 计算电机模型“空载测量” P115=5 计算电机模型“调节器优化” 以上优化在参数设置完后20秒内变频器必须启 动(PU板上的I按钮);全部优化完后,等待, 直至变频器断电。工作状态为“开机准备”009。 端子设定: P368=1 PMU板和端子板控制有效 P443=11 模拟给定(电位器控制) P554=22(端子9)启动 P568=18(端子7)正点 P569=20(端子8)反点 P448= 5 正点给定频率 P449= -5 反点给定频率

S3C44B0 调试笔记(1)

S3C44B0 调试笔记 ——BIOS部分 由于调试耗费了我太多时间,所以记录下来,方便以后复习,同时也希望能给初学者一点儿启示,大家少走弯路。 我是去年开始听说ARM的,可能是本人太闭塞了吧。看到后就有一种想玩的冲动,想从51升级ARM。网上都说44B0比较适合初学者。机缘巧合,21ic上看到有人叫卖44B0空板,很便宜100RMB,主板加简易JTAG小板。做研发的都穷啊。还不错,钱汇过去,板子第3天就回来了,就是网上流行的那个44B0 PCB。贴个图吧,随便找了块和我那块板子一模一样的: (FIGURE - 1) 拿到板子挺高兴的,检查了一下线路没问题。就按对方提供的BOM单采购元器件。先把电源部分焊上,测量没问题,再把必要的元器件焊上(CPU、SDRAM、FLASH、UART),同时还有JTAG小板。量电源和地没有短路,上电!电源灯亮了,没冒烟。 下面一步就是把BIOS程序烧写到FLASH上了,对方提供的是FLUTED,按照说明操作,烧录失败!这下傻了,最怕的就是这个,对于一个初学者来说,简直是灭顶之灾啊。首先怀疑CPU或FLSH是否虚焊,我的焊接水平一般,所以很值得怀疑,只好又搪了一遍。但问题依旧。又怀疑JTAG小板,仔细检查了一下没问题啊,跳线插插拔拔的也没无济于事。怀疑并口,重启进BIOS,并口设置也没问题。当天是没办法了,睡觉吧。 第二天就开始联系供应商,寻求帮助,但没什么结果。也是,就100块钱,还要什么服务啊。只好自己找问题,看到原理图上FLASH用的是SST 39VF160 ,我记得我的不一样啊?我的BOM上写的是AM29LV160,我又询问了供应商,他确认了一下说他的BOM写错了。狂晕啊。不过还好,终于找到问题了,但换FLASH还得周末去买啊,等不及了,看看这个能不能凑合用吧,改FLUTED的FCD文件,就是根目录那个DEFAULT.FCD。找到2块FLASH的Datasheet对比着改,连改带调,2个晚上,终于烧录成功了。拔下JTAG,接上串口,打开超级终端。复位,一堆乱码,我想应该差不多了,试着更改超级终端的设置。终于成功了,我看到BIOS的提示信息了,敲个help进去,出来一堆,当时感觉好爽,这个

屠宰废水调试笔记

水解酸化是通过控制水力停留时间,将厌氧过程控制在水解段而不进入酸性衰退阶段,此时,大分子有机物被水解为小分子有机物,以利后续好氧处理,同时,回流污泥处于缺氧状态时,减少了剩余污泥的排出量。 为了进一小保证气浮处理的效果,同时利用废水中投加一定量混合剂,使废水中的乳化油脂破乳和白污凝固的作用,采用先进的气浮设备,将其分离,通过上述预处理,可将废水中的胡机物、悬浮物和胶体更彻底地除去,其出水与厂生活污水混合,汇入集水井,该污水由提升泵排入水解调节池。污水在水解调节池水力停留时间约12~18小时,在调节水质、水量的同时,在异养型兼性微生物和酶的作用下,含碳有机物被水解成单扩、蛋白质被水解为肽和氨基酸,脂肪被水解为甘油脂肪酸,即:大分子有机物经过断链和不完全降解后,变为生化的小分子有机物,出水进入后续的好氧反应,在此阶段,COD的去除率可达20%左右。为保证水解调节池有充足的微生物,在池增设填料,使微生物在其上附着生长,池设6台水下曝气机。 制衣废水的接触氧化调试 3.1、调试前的准备 3.1.1、调试前期主要工作 (1)清水试车已经完成。 (2)各构筑物及设备已开始正常使用,有一定量的污水产生,能够维持污水处理工序的基本运行。 (3)有良好的接种污泥的来源。 3.1.2、接种污泥的来源 污泥接种可以大大缩短污泥培养驯化的时间。 以下污泥可作为接种污泥且按此顺序确定优先级: ①同类污水厂的剩余污泥或脱水污泥 ②城市污水厂的剩余污泥或脱水污泥 ③其它不同类污水站的剩余污泥或脱水污泥 ④河流或湖泊底部污泥 ⑤粪便污泥上清液 本次调试采用接种污泥取自市政污水厂脱水后的污泥。 3.1.3、接种污泥的数量 接种量视污泥种类的不同而不同,一般接种量为3-5g/L干污泥。本次调试向一级接触氧化池和二级接触氧化池分别投入约3t含水率80%的泥饼,投加方式为多点投加。 3.2、接触氧化池单元的调试 3.2.1 污泥的培养 污泥的培养有连续培养法和间歇培养法。针对本工程的特点,污泥培养可采用连续培养的方法。 (1)向调节池注入生活污水,并投入一定的营养源。 (2)当调节池液位达到中液位以上时,开启污水提升泵,将污水打入水絮凝沉淀池,絮凝沉淀池水满之后流入水解酸化池,水解酸化池水满之后流入接触氧化池。 (3)当一、二级接触氧化池液位均达到设计液位时,开启鼓风机,同时停止调节池的提升泵,闷曝1~2天。 (4)之后启动一级沉淀池中的污泥回流泵,将污泥回流至水解酸化池,同时开启二级沉淀池中的污泥回流泵,将污泥回流至一级接触氧化池,继续闷曝2~3天,投入适量的养料。闷曝一个星期之后,开启调节池提升泵,将生活污水提升至后续处理单元,水量逐渐增大,通过调节提升泵出水阀门及回流阀进行水量控制。 (5)依上述流程连续运行,观察填料上污泥的生长状况。 (6)当填料上的生物膜达到1~2mm厚时,且沉淀池的出水较清澈,氧化池进出水去除率>60%时,可认为生物膜的培养基本结束。此时可关闭沉淀池中的污泥回流泵,不再将污泥回流至接触氧化池。当水质恶化时,可适时开启污泥回流泵,以增强处理效果。 3.2.2 污泥驯化 当污泥培养成功之后,即可进行污泥驯化阶段。本工程调试采用方法属异步驯化。 (1)调节池进入厂区排放废水。 (2)开启污水提升泵将污水提升至水解酸化池,水解酸化池污水自流入一级接触氧化池,控制提升泵出水水量约为设计水量的1/4,即提升水量为每天100t。 (3)持续运行一段时间之后,观察出水水质情况,当沉淀池的出水较清澈,加大提升泵出水水量,每次增加10-20%(以设计流量为基准),重复以上步骤,直至达到满负荷,当处理水量达到满负荷,水质亦能达标时,驯化阶段结束。进入试运行及稳定运行阶段。3.2.3 注意事项 (1)接种污泥在投加入反应器前,应以小于0.5mm的沙网滤过,以去除其中尺寸较大

测宽仪调试笔记

测宽仪调试调试时间:2014/01/08至2014/01/09调试内容:测宽仪标定、软件的操作使用及简单的故障维护。一、大连亚泰华WG2000测宽仪大连亚泰华光电技术有限公司成立于2004年,依托于大连理工大学光电检测技术工业中心与大连理工大学国家一级学科博士点—光电工程专业,具有一流的技术开发实力及十余年的测宽仪研究与开发经验。1.1 主要技术指标测量精度:±0.4mm(动态);±0.2mm(静态)测量范围:100~3500mm(可分档)输出频率:100~200次/秒(5~10ms)带钢温度:650~1300℃ 利用红外热辐射<650℃ 利用上打光源照明允许最大跳起: 在摄像机的视场范围内允许跑偏范围: 在整个辊道范围内1.2系统的工作原理与组成1.2.1 系统的工作原理 如右图所示,系统采用双摄像机利用立体视觉原理和红外光电检测技术对辊道上的钢板进行在线测量,并结合高速数字信号处理技术与编程软件相结合对信号进行相应处理,并显示相关数据与测量曲线。 、管路敷设技术通过管线敷设技术不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

SIM900_GPRS_调试笔记

一、通过IP地址进行GPRS数据传输 以下GPRS操作方法支持SIM900 1、如果您的网络环境是基于ADSL线路上网,那么绝大数据情况下,都可以作为数据中心,因为ADSL线路目前都是具有公网IP地址的。 2、采用小区宽带上网,移动无线上网(如3G、GPRS/CDMA 拨号等)之类,大多不能够获得公网IP地址,或者是有上级防火墙,这种网络环境,均不能作为数据中心。 3、绝大多数路由器的出厂默认设置情况下,都是禁止路由器外部网络向内部网络发起连接请求的,因此在网络环境下使用了路由器的情况下,需要对路由器进行端口映射配置。端口映射配置就是设置路由器允许通过特定的外部端口发起向内网的某台电脑的连接,端口映射又叫端口转发,又叫虚拟服务器,NA T设置等。各个品牌路由器不同,称谓不同,但操作都是类似的。 4、准备好一张已经开通CMNET数据业务的移动数据卡,最好是全球通或者动感地带的SIM卡,这两个品牌的SIM 卡默认开通CMNET数据业务,如果是神州行的数据卡请确认已经开通CMNET业务。 第1步:A TE1 握手并设置回显

第2步:A T+CSQ 查询当前信号质量 第3步:A T+CGREG? 查询模块是否有注册网络

第4步:A T+CGATT? 查询模块是否附着GPRS 网络 第5步:AT+CSTT 设置APN

第6步:AT+CIICR 激活移动场景 第7步:A T+CIFSR 获得本地IP地址

第8步:A T+CIPSTART="TCP","124.235.160.149",12345 建立TCP/IP连接

第9步:A T+CIPSEND 模块向服务器发送数据

【STM32笔记】 基础调试篇

开始看STM32 好几天了看东西有个不太好的习惯总想看全全弄明白了再调其实这样是很不好滴浪费时间芯片在重新初始化时是会把设备配置成最小系统的当面对一个复杂的系统时(其实STM32datasheet有的地方写的不太好有点复杂个人感觉) 可以先抛开不使用的功能待日后再慢慢加上会是一个很愉快的过程 使用ST的固件库先用熟悉了再根据自己的习惯修改代码毕竟ST的CODER应该还是比较合理的吧 以下是几个需要用户修改的配置文件 stm32f10x_it.c 用户中断函数 stm32f10x_lib.h 用户程序唯一需要#include 的头文件 stm32f10x_conf.h 配置外围设备地址将相应的设备define 屏蔽掉后设备地址将不被编译程序用到会报错 其实主要的区别就是在初始化的方式上 STM32F103x有两个位带区分别为RAM 和PERHIAL即0x2000000 , 0x4000000开始的1M字节可以分别映射到 0x22000000 , 0x42000000开始的线性空间里,然后它们就可以位寻址了,就好像常用的单片机一样。计算公式如下: #define RAM_BASE 0x20000000 #define RAM_BB_BASE 0x22000000 #define Var_ResetBit_BB(VarAddr, BitNumber) \ (*(vu32 *) (RAM_BB_BASE | ((VarAddr - RAM_BASE) << 5) | ((BitNumber) << 2)) = 0) #define Var_SetBit_BB(VarAddr, BitNumber) \ (*(vu32 *) (RAM_BB_BASE | ((VarAddr - RAM_BASE) << 5) | ((BitNumber) << 2)) = 1) #define Var_GetBit_BB(VarAddr, BitNumber) \ (*(vu32 *) (RAM_BB_BASE | ((VarAddr - RAM_BASE) << 5) | ((BitNumber) << 2))) 以上是ST库里的宏直接用就好了同理定义好PERHIAL_BASE , PERHIAL_BB_BASE即可一样操作外围设备通过这种方法脱离ST的库结构许多

4、SIM800系类_蓝牙调试笔记

SIM808开发板蓝牙SPP功能调试笔记 注意:只有SIM808蓝牙版本才具备该功能。 1、AT+BTPOWER=1 //打开蓝牙电源 正常返回”OK”,如果模块蓝牙电源原本已经打开,那么将返回ERROR。 2、AT+BTHOST? //查询模块名称和地址 返回: AT+BTHOST? +BTHOST: Niren,27:a7:2c:90:62:60 OK 也可以通过该指令修改蓝牙设备名称 3、AT+BTSCAN=1,10 //收索蓝牙附件设备,收索时间10S 返回: AT+BTSCAN=1,10 OK +BTSCAN: 0,1,"MEIZU MX3",22:22:4e:73:13:84,-45 //收索到的设备,设备ID:1 +BTSCAN: 1 //收索结束 注意:这里需要等待返回+BTSCAN: 1才代表收索结束。 4、AT+BTPAIR=0,1 //主动请求匹配设置ID:1蓝牙设置 AT+BTPAIR=0,1 OK +BTPAIRING: "MEIZU MX3",22:22:4e:73:13:84,573342 注意:这时手机就会收到模块提交的配对请求,手机确认配对即可 5、AT+BTPAIR=1,1 //响应连接请求 AT+BTPAIR=1,1 OK +BTPAIR: 1,"MEIZU MX3",22:22:4e:73:13:84 6、AT+BTGETPROF=1 //获取配对的蓝牙设备提供的服务 返回: AT+BTGETPROF=1 AT+BTGETPROF=1+BTGETPROF: 10,"PBAP" +BTGETPROF: 1,"A2DP(Source)" +BTGETPROF: 2,"HFP(AG)" +BTGETPROF: 8,"AVRCP(Target)" OK 注意:这里费服务列表中没有我们需要的SPP服务,这需要,先打开手机的蓝牙串口助手,打开蓝牙助手后再重新获取一次服务。

MTK平台驱动调试笔记

分类:LINUX 一、【一】调试串口的设置 驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口 1 通过手机进入工程模式设置 2 修改代码,修改Nvram_user_config.c中的 NVRAM_EF_PORT_SETTING_DEFAULT[] 3.通过META工具修改在 连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出 现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值, 二【【二】关于gpio口 Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__ 工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。 代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例): GPIO_ModeSetup(25, 0); 设置GPIO25为模式0 GPIO_InitIO(1,25); 初始化GPIO25方向为输出 GPIO_WriteIO(0, 25 ); 设值GPIO25输入低电平0 三、【三】键盘设置 1)键盘定义Keypad_def.c 如果定义CUST_NEW,工具中的键盘定义对应在改文件里的 KEYPAD_MAPPING(keypad_drv.h); 2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)

中文笔记6错误处理调试及文件输入输出

6. Error-Handling, Debugging and File Input/Output 错误类型 语法错误、运行时错误、逻辑错误语法错误:不符合 VB 语法的错误,如关键字出错、非法的参数等。运行时错误:超出了程序的控制范围,如变量的范围范围溢出、文件没有找到等。 VB允许你跟踪这样的错误,并努力改正它们。 逻辑错误:最难发现的,带有逻辑错误的程序可以运行,但运行结果通常是错误的。VB 的调试器有助于发现这种错误。 减少错误的方式:仔细设计应用程序,设计时间越长,调试所需的时间就越少。适度使用程序注释 对变量、对象及过程使用一致、有意义的名称。 跟踪运行错误并处理它运行时错误时可跟踪的,这意味着 VB能够发现错误,并允许你跟踪及修正它。跟踪错误使用关键字 On Error ,语法如下: On Error GoTo errlabel 此行下面的语句如果出现错误,将跳到 errlabel 标签处执行。例如: Sub SubExample() . [Declare variables, ...] On Error GoTo HandleErrors ‘错误跟踪开始 . [Procedure code] ‘在执行这段代码过程中出现任何错误时, 程序都将跳到 HandleErrors 处开始执行 Exit Sub HandleErrors: . [Error handling code] ‘根据错误类型,选择处理方法 End Sub 如果在过程中想关闭错误跟踪,则可以使用 On Error GoTo 0 对象Err的属性Number表示与当前的错误条件相关。函数Error()把错误号当作参数并返回一个字符串来描述对应的错误。 当错误被跟踪并采取一定的措施后,程序执行流程必须返回到应用程序,这种控制是通过 Resume 语句实现的, Resume 有三种表达形式: Resume 重新执行引起错误的语句,这可能比较危险,因为如果错误没有 被正确处理,没会出现死循环。 Resume Next 程序将从出现错误的语句的下一条语句起开始执行 Resume 标号程序将从标号所标示的语句开始执行

屠宰废水调试笔记精选版

屠宰废水调试笔记 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

水解酸化是通过控制水力停留时间,将厌氧过程控制在水解段而不进入酸性衰退阶段,此时,大分子有机物被水解为小分子有机物,以利后续好氧处理,同时,回流污泥处于缺氧状态时,减少了剩余污泥的排出量。 为了进一小保证气浮处理的效果,同时利用废水中投加一定量混合剂,使废水中的乳化油脂破乳和白污凝固的作用,采用先进的气浮设备,将其分离,通过上述预处理,可将废水中的胡机物、悬浮物和胶体更彻底地除去,其出水与厂内生活污水混合,汇入集水井,该污水由提升泵排入水解调节池。污水在水解调节池内水力停留时间约12~18小时,在调节水质、水量的同时,在异养型兼性微生物和酶的作用下,含碳有机物被水解成单扩、蛋白质被水解为肽和氨基酸,脂肪被水解为甘油脂肪酸,即:大分子有机物经过断链和不完全降解后,变为生化的小分子有机物,出水进入后续的好氧反应,在此阶段,COD的去除率可达20%左右。为保证水解调节池内有充足的微生物,在池内增设填料,使微生物在其上附着生长,池内设6台水下曝气机。 制衣废水的接触氧化调试 、调试前的准备 (1)清水试车已经完成。 (2)各构筑物及设备已开始正常使用,有一定量的污水产生,能够维持污水处理工序的基本运行。 (3)有良好的接种污泥的来源。 污泥接种可以大大缩短污泥培养驯化的时间。 以下污泥可作为接种污泥且按此顺序确定优先级: ①同类污水厂的剩余污泥或脱水污泥 ②城市污水厂的剩余污泥或脱水污泥 ③其它不同类污水站的剩余污泥或脱水污泥 ④河流或湖泊底部污泥 ⑤粪便污泥上清液 本次调试采用接种污泥取自市政污水厂脱水后的污泥。 接种量视污泥种类的不同而不同,一般接种量为3-5g/L干污泥。本次调试向一级接触氧化池和二级接触氧化池分别投入约3t含水率80%的泥饼,投加方式为多点投加。 、接触氧化池单元的调试 污泥的培养 污泥的培养有连续培养法和间歇培养法。针对本工程的特点,污泥培养可采用连续培养的方法。 (1)向调节池内注入生活污水,并投入一定的营养源。 (2)当调节池内液位达到中液位以上时,开启污水提升泵,将污水打入水絮凝沉淀池,絮凝沉淀池水满之后流入水解酸化池,水解酸化池水满之后流入接触氧化池。 (3)当一、二级接触氧化池内液位均达到设计液位时,开启鼓风机,同时停止调节池内的提升泵,闷曝1~2天。 (4)之后启动一级沉淀池中的污泥回流泵,将污泥回流至水解酸化池,同时开启二级沉淀池中的污泥回流泵,将污泥回流至一级接触氧化池,继续闷曝2~3天,投入适量的养料。闷曝一个星期之后,开启调节池提升泵,将生活污水提升至后续处理单元,水量逐渐增大,通过调节提升泵出水阀门及回流阀进行水量控制。 (5)依上述流程连续运行,观察填料上污泥的生长状况。 (6)当填料上的生物膜达到1~2mm厚时,且沉淀池的出水较清澈,氧化池进出水去除率>60%时,可认为生物膜的培养基本结束。此时可关闭沉淀池中的污泥回流泵,不再将污泥回流至接触氧化池。当水质恶化时,可适时开启污泥回流泵,以增强处理效果。 污泥驯化 当污泥培养成功之后,即可进行污泥驯化阶段。本工程调试采用方法属异步驯化。 (1)调节池内进入厂区排放废水。 (2)开启污水提升泵将污水提升至水解酸化池,水解酸化池污水自流入一级接触氧化池,控制提升泵出水水量约为设计水量的1/4,即提升水量为每天100t。 (3)持续运行一段时间之后,观察出水水质情况,当沉淀池的出水较清澈,加大提升泵出水水量,每次增加10-20%(以设计流量为基准),重复以上步骤,直至达到

DM8168硬件调试笔记

DM8168硬件调试笔记 自2014年10月开始,第一次接触STM320DM8168截止到今天2015年04月细数已有8个月。说长不长,说短不短,在这几百天的时间内经历从懵懂到熟知。过程是痛苦的,学习是煎熬的,但当板子调通正常显示视频图像的那一刻,所有的痛苦都转化成了喜悦。这种成就感相信所有搞电子的(或类似工作)都深有体会。当然我们也不要被喜悦冲昏头脑,因为在奋斗的路上并不只有你一人,还应感谢团队的每一个成员。如果没有他们的指教,调试的过程将更加痛苦,充满艰辛。废话少说了,下面开始正题。 一、电子产品的研发过程我简述一番,大概的流程 first:从最初TI的开发板入手,TI提供了相当完整的开发套件,包括原理图,软件代码,教程,甚至是PCB的gerber文件(这对于我们layout是相当不错的参考材料)。 Second:那就是参考TI的资料画原理图,这个过程是非常重要的,根据自己项目的需要。对各模块进行取舍。我们设计主要模块有:2个网络模块,1个HDMI输出(此HDMI为DM8168直连输出,可以省略EDS元件,因为只是调试接口不需要如此严谨),1个PCIE(X2 可达到2Gbs),1个RGB(32位全部引出),1个nand flash,1个TF卡,2个USB(不需要用),1个串口,2G的DDR3(非常重要的东东),电源管理系统(我们使用一颗cpld(EPM240)作为上电时序控制)。对于其它的音频模块,HDMI输入等等进行删除。删除时如牵涉到DM8168特殊管教一定要参照TMS320DM816xDaVinciDigitalMediaProcessors(sprs614b).PDF上的说明例如:管教AH19(VDAC_VREF)此管教就是可以悬空。像这样的管教一定要多加注意,多看DATASHEET上的说明是否可以悬空。 Third:layout是重重之重了。对于layout最关键的几处应该是 1:DDR3,对于DDR3的layout DATASHEET上的有非常详尽的说明,我们只要严格遵守就不会有什么大碍。我主要罗列关键问题点:1:等长的问题,对于地址线(包括时钟)要做等长处理而且从DM8168到第一片DDR3芯片的距离必须控制在2500mil,同一地址线之间的距离遵守3W原则,时钟线距离遵守4W原则。同一组数据线做等长即可,线距之间也同样遵守3W 4W原则。详尽内容请参考“8.3 DDR2/3 Memory Controller”一节; 2:PCIE layout也是要注意等长与线距; 3:网络layout反而不是很严格,只要做到线距3w就可,对于等长没有特殊要求; 4:TF nand flash layout不需要特别严格; 5:电源模块的布局要相当注意,散热问题,覆铜问题都是相当重要的。TI的电源芯片下面的PAD必须多加几个过孔到GND以做散热之用。特别对于1V_AVS,1V_CON这样的小电压大电流的覆铜要相当讲究,本次版本就是因为1V_AVS的覆铜有问题,导致到DM8168的电压下降到820mv。由此已发了许多莫名的问题(TF卡无法挂载,网口传输问题); 二、调试 板子调试的过程还是充满危险的,细数问题点如下 a)初次上电,连电源指示灯都不亮 原因:SMCJ5肖特基管丝印画反,导致前级相当于接了一个正向二极管。 b)上电后胆电容爆炸 分析:原以为是胆电容的耐压值过低引起的,后成耐压值更大的胆电容上去,结果 是发生了更大的爆炸声,甚至这颗胆电容都起火了~_~ 这到底是为什么???? 莫名其妙的花了大把时间去研究胆电容; 原因:其实很简单,当你查遍所有资料都无法找到原因是,那么真正的元凶可能就 是你犯了一个低级错误。我又把丝印画反了,这倒不是因为我粗心。而是有意为之,

nRF24L01调试笔记

经过两日的调试nRF24L01终于调试成功。耐心,细心。有想法。资料。数据手册。总就会成功。 下面是调试的基本方法: 24L01是收发双方都需要编程的器件,这就对调试方法产生了一定的要求,如果两块一起调,那么通讯不成功,根本不知道是发的问题还是收的问题,不好意思的说,我当时也是没理清调试思路才浪费了一天时间看着模块干瞪眼。并且烧坏了两个模块。(还好这个模块可以》。。。。。)。 所以正确的调试方法应该是先调试发送方,能保证发送正确,再去调接收,这样就可以有针对性的解决问题。 至于怎么去调发送方,先说下发送方的工作流程: ??配置寄存器使芯片工作于发送模式后拉高CE端至少10us ??读状态寄存器STATUS ??判断是否是发送完成标志位置位 ??清标志 ??清数据缓冲 网上的程序我也看过,大多都是成品,发送方发送-等应答-(自动重发)-触发中断。可是这样的流程就已经把接收方给牵涉进来了,就是说一定要接收方正确收到数据并且回送应答信号之后发送方才能触发中断,结束一次完整的发送。可是这跟我们的初衷不相符,我们想单独调试发送,完全抛开接收,这样就要去配置一些参数来取消自动应答,取消自动重发,让发送方达到发出数据就算成功的目的。 SPI_RW_Reg(WRITE_REG + EN_AA, 0x00); // 失能通道0自动应答 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x00); // 失能接收通道0 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x00); // 失能自动重发 1有了以上这三个配置,发送方的流程就变成了发送-触发中断。这样就抛开了接收方,可以专心去调试发送,可是怎么样才知道发送是否成功呢,要用到另外两个寄存器,STATUS 和FIFO_STATUS。 这样就很清晰了,我们可以通过读取STATUS的值来判断是哪个事件触发了中断,寄存器4、5、6位分别对应自动重发完成中断,数据发送完成中断,数据接收完成中断。也就是说,在之前的配置下,如果数据成功发送,那么STATUS的值应该为0x2e。这样就可以作为一个检测标准,另外一个标准可以看FIFO_STATUS寄存器,第5位的描述:发送缓冲器满标志,1为满,0为有可用空间;第4位的描述:发送缓冲器空标志,1为空,0为有数据;同样可以看到接收缓冲器的对应标志。这样在数据发送成功后,发送寄存器当然应该是空的,接收缓冲因为在之前已经失能,所以也应该是空,也就是说成功发送之后的FIFO_STATUS寄存器值应该是0x11。 有了这两个检测标准,我们即使不用接收方也可以确定发送方是否成功发送。当发送方调试

IPC曝光增益调试笔记

DRC: 开启后,会提升暗处细节,同时也提升噪声,导致噪声强度相比DRC关闭时更大些,此时边缘增强,去噪功能都应该与DRC有关 AE: 1: 曝光时间:sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这 段时间。 2: 曝光增益:对 sensor 的输出电荷的总的放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。 3: 光圈:光圈是镜头中可以改变中间孔大小的机械装置。 4: 抗闪烁:由于电灯的电源工频与 sensor 的帧率不匹配而导致的画面闪烁,一般通 过限定曝光时间和修改 sensor 的帧率来达到抗闪烁的效果。 sharpen: 在不同照度下,同样的物体细节、边缘表现程度不一样,为了平衡真实性和物体细节 表现,随着照度变化调节参数。同时在低码率下,由于编码压力较大,可以适当降低 物体边缘强度和细节,来保证低码率下的编码运动效果 SharpenAltD ,大边缘,增加会导致白边明显,但看上去很锐利。边缘锐度 大边缘的清晰度是影响人主观感受重要因素 SharpenAltUd ,细节。增加会导致噪声明显提高,低照度下建议 调低。 噪声与码率 1. 噪声大且码率相对小的情况,加大去噪强度,可以有效降低编码压 力,使图像效果更好。 2. 不要误认为模糊都是去噪大导致的。很多情况模糊是因为编码损失 3.Sharpen 是建立在demosaic 参数基础上的。Demosaic 参数识别出 边缘,然后由sharpen 一些常用光源的色温为:标准烛光为1930K(开尔文温度单位);钨丝灯为2760-2900K;荧光灯为6400K;闪光灯为3800K;中午阳光为5000K;电子闪光灯为6000K;蓝天为10000K。所以傍晚色温是最高,适用于测试 DCI: 是自动对比度增强的简称(Dynamic Contrast Improvement)。根据当前图像的亮度 分布情况,动态地调整图像的亮度和对比度。由于环境的影响,采集到的图像往往会 出现偏暗、偏亮和对比度不足的情况。DCI 将偏亮的图像亮度调小,偏暗的图像亮度 调大,增加单调图像的对比度,减少亮度变化过大的图像的对比度 注: DCI 自动进行亮度、对比度的调整,通常不需要调整 3 个 gain 值,避免由于 gain 调整 不当,造成图像过亮、过暗和对比度不足或过强,以及增加人眼原来不可见的细节, 或丢失可见细节。3 个 gain 提供了动态对比度调节的基础上,可叠加人工干预的值。3 个参数是独立的,可以分别设置,参数间没有互相制约关系,调试的效果和具体的场 景有关,在不同的场景下,调节上述 3 个 gain 值,调节的效果会不完全相同 Gamma: 1. Gamma 对图像质量的具有显著的影响,不同的gamma 曲线可以取 得不同的效果。 2. Gamma 会影响到对比度与暗处细节。对比度越高,通透性越好, 但相应的暗处细节损失越多。

AD5272调试笔记

AD5272/5274数字电位器调试笔记 最近一项目需要做一个DC/DC boost升压,设想通过调节反馈电阻的参数来做到数字调压功能,在第一次使用数字电位器的时候,尽然碰到了好几个问题,现记录如下: 1./Reset PIN忘记拉出来 2.cap_exp电容一定要加,估计芯片内部有个可以写50次的OTP,电容作为升压用的 3.ADDR脚接GND,地址A1A0=00,特别注意,如果时序对了没有应答,可能是寻址不对,这个问题也折腾了我一整天。因为ADDR pin虚焊,导致悬空,地址不是00,用万用表检测的时候量到的电压可能是100多mv,不是0V,导致IIC没有ACK信号。 4.在写时序的时候开始总是不能更新RADC的值,应答信号也有。后来查找到问题所在:第一步要先写入0X1C03,允许操作寄存器,开始看文档以为只要给一个复位命令就好,尝试很多次都不对。增加这个命令就oK 参考代码如下: void AD5272_Write(u16 w_data) { u8 w_data_l; u8 w_data_h; w_data_l=(u8)((w_data)&0x00ff); w_data_h=(u8)((w_data>>8)&0x00ff); IIC_Start(); IIC_Send_Byte(0x5E); //·¢?íADDR IIC_Wait_Ack(); IIC_Send_Byte(0x10); //·¢?íREST IIC_Wait_Ack(); IIC_Send_Byte(0x02); //·¢?í0010 cmd IIC_Wait_Ack(); IIC_Stop(); //2úéúò???í£?1ì??t Delay_us(5000); IIC_Start(); IIC_Send_Byte(0x5E); //·¢?íADDR IIC_Wait_Ack(); IIC_Send_Byte(0x1c); //·¢?í00 0001 01 ?D??4bit 0001 CMD(D′) óò±?á???ê?êy?Y IIC_Wait_Ack(); IIC_Send_Byte(0x03); //·¢?íμí8?? IIC_Wait_Ack(); IIC_Stop(); //2úéúò???í£?1ì??t IIC_Start(); IIC_Send_Byte(0x5E); //·¢?íADDR

单片机 nRF24L01 调试笔记

单片机+nRF24L01+调试笔记 一切从头说起吧。这个月本来想做一个东西:遥控 开门。想法来源是,经常晚上或是终于都睡觉了还有人 来敲门,又不做声,感觉真的好烦,敲门你就做个声或 是直接说有什么事,烦的是他就是不做声。这种门我是 不开的。于是就有那种想法。大致流程是:发射机遥控 发送开门信号,接收机接收信号,控制步进电机完成开 门动作,门开完之后接收机再返回一个完毕信号给发射机。半天的时间就吧电路给焊接好了,可是3.3V的单片机就是不能驱动5V的ULN2003,没办法只能先把这部分 放着;于是调试nRF24L01+,这次调试了半天就可以完 成双向通信了,记得这学期开学的第一周的周六吧花了 10多个小时才调通了单向的通信,之前去图书馆借书, 分析别人的程序的时间还不算,上个星期的半天可以调 通双向通信也就不是什么意外了。无线通信部分算是好了。再又回头来做3.3V单片机驱动5V的ULN2003的部分,解法又是电平转换。给老师做得项目里有个12V转5V的一个电平转换,记得到时在老师提示用三极管的条件下,我很快就想出来了电路图,用Proteus7.5软件仿真结果正确,实际搭建电路时发现三极管的e极串接的两个电 阻不能太大,即使电压满足要求,可是单片机依然不能

识别,把电阻按比例缩小后好了。从新画电路,用Multisim仿真的,仿真结果没问题,可是实际搭建的电 路就是不行,没办法,只能再次想办法去解决问题,百度、谷歌、问人、在面包板上搭建电路、仔细看芯片的 数据手册,最后还是STC的数据手册里找到了解决问题 的方法,问题解决了;但是手里的步进电机的扭矩不够,这个其实在我去解决那个问题的时候我就知道了;换电机,加驱动器,不可能,手里没有钱,也不想为那投资 太多。只能再次做我的小车,老早就有这个想法了。这 次似乎没有电平的问题,L9110是5V的器件,nRF2401+ 的数据脚可以和5V的单片机的IO口直接相连,3.3V的 单片机IO口不够就用5V的单片机,NOKIA5110液晶和ADXL345是5V和3.3V通吃的;nRF24L01+之前也用5V单片机玩过没有问题,但是为了保险还是在它的数据脚加 了10K的下拉电阻。硬件利用中午和下午饭前饭后和晚 上9点以后的时间焊接了几天做好了,检测也没有问题,这次有个万用表可以做检测。星期五的上午搞了半天硬件,硬件算是搞完了,下午去自习,晚上选修没有去在 寝室写程序,NOKIA5110液晶调试好了、ADXL345调试好了、按键调试好了,最后是nRF24L01+无线模块,调试 没有反应,要命的是它竟然发烫,坏了,ADXL345被我 搞的冒烟都没问题,可它不行,无论我怎么搞它就是活

相关主题
文本预览
相关文档 最新文档