打印
[51单片机]

振南ZN-X开发板【51版】各个功能模块逐一测试 连载发布.......

[复制链接]
2828|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2016-6-16 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2016-6-28 16:16 编辑





振南电子网站 www.znmcu.cn  

振南电子 ZN-X开发板技术支持QQ群: 177856520


振南 SD卡、FAT32文件系统、嵌入式存储技术交流QQ群:
198521880




关于ZN-X开发板,有一个很重要的问题一直困扰着我和用户,那就是:如何方便快速地对板上的所有硬件资源进行测试,也就是“整板”测试。通过它来检查和确认板上硬件是否完好,是否可以正常工作。如果有问题,能够快速定位问题。这对于振南开发板的批量化生产加工、测试、发货有很大的好处,可以让工作效率有很大提高,另一方面,对于开发板的使用者来说,也可以全面快速的验证开发板是否OK,是否在物流或自己的使用过程中造成了损坏。
振南ZN-X开发板上包含了很多的实验资源,比如TFT液晶、SD卡、ADC/DAC、点阵屏、数码管等等,总共算下来足有近20种。我们要把所有模块全部插接到ZN-X的基板上,对各个功能统一的逐个进行测试。
一种最原始最笨的办法就是把各个功能的测试程序,一个个地烧到开发板上。要完成近20个功能的测试,我们就需要烧录20次。这个工作量是比较大的,而且是重复性的劳动,乏味无趣。
所以,我们提出了“整板测试”的概念。我们开发一个高度集成化的综合性的实验,它包含了开发板上所有功能的驱动,这个程序烧到开发板之后,我们通过某种接口,来灵活调用各个功能,从而完成对所有功能的统一化的测试。
有人曾经提出过这样的问题:“ZN-X开发板的那么多的模块,可以一股脑地全部插到基板上去吗,并且还要让它们能够同时工作起来,这看似有点困难,因为单片机的IO数量是有限的!!”回答是:“振南在设计ZN-X之初,就已经深入而全面的考虑了多个功能模块共同占用IO,又能够同时工作的实现方案。比如SD卡、spiFLASHTFT液晶、摄像头....等等,同时接起来,互不影响的协同工作。这涉及到IO与总线的深度复用,一条SPI或并行总线上,通过选通和编址,基于三态的原理,实现了挂接多个功能模块,对IO资源进行分时复用。通过长期的优化和安排,最终实现了所有模块全部插上去,也能够全部正常运转起来!!”
这一问题对于整板测试是很重要的。我们不需要在测一个功能的时候,而把其它与之冲突的功能模块拿掉。对IO和总线的高度复用,使得我们可以把所有模块一次性全部插上去,然后就可以一个个地对它们进行测试了!!
这个高度集成化的综合性的实验,必然是一个很大的工程,它不光只是简单的驱动大杂烩,更重要的是它一方面涵盖了对功能模块细致深入的测试方法,针对哪个模块要使用哪种测试方法,比如对于TFT液晶,我们的测试方法就是去简单一个简单的图片或是用纯色对刷屏,再或者是显示一个色带;而对于SD卡,我们采用的测试方法则是对某一扇区进行写和读,然后比较写入读出的数据是否一致;对于点阵屏,我们可以让他显示一个点阵图形,然后肉眼观察是否显示正常。这些测试方法需要精心的设计。另一方面,这个整板测试要给人留出一个方便的接口,以便可以灵活调用到某一个测试。

相关帖子

沙发
znmcu|  楼主 | 2016-6-16 23:23 | 只看该作者




可以看到,有一些测试是需要设定一些参数的,比如让TFT液晶以给定的颜色刷屏、从EEPROM给定的地址读写数据等等。这种情况,最合适的就是SHELL命令行方式。这种形式就像是DOS这样,一个命令对应一个测试程序,同时又可以传入一些参数。
这个SHELL命令行方式的整板测试,由振南历时10天完成开发和测试,一共包含近20个命令,可以对ZN-X开发板上的各功能模块进行全面的测试。振南使用它可以快速进行开发板的测试,提高批量化生产和发货速度;而用户使用它,可以在拿到板子后第一时间把板子玩转起来,初步领略到ZN-X的乐趣。起码可以快速的确定开发板硬件是否是完好正常的。


使用特权

评论回复
板凳
znmcu|  楼主 | 2016-6-16 23:24 | 只看该作者





测试方法的设计是一件比较有创造性的工作,振南对各个功能模块的测试方法是这样的
ZN-X 整板测试各功能模块测试方案》:
功能模块
测试方法及说明
LED环测
说明:在ZN-X上有一圈LED,它们不光只是为了好看和趣味性,它们每一个LED都与板上的关键信号相连,LED的亮灭可以反映出单片机对这些关键信号的控制是否正常。
测试方法:依次点亮这些LED,肉眼观察是否有不亮的。LED组成了一个环,振南把这种测试方法称为“环测”或者“环状流水灯”。“环测”通过之后,说明单片机与外围功能模块之间的关键信号的连接是OK的。
SD1测试
说明:对ZN-X上的第一个SD卡进行扇区读写测试。扇区读写是进一步进行文件系统移植和应用的基础,想使用振南的znFAT,这一测试必须通过。
测试方法:先向SD1999扇区写入512字节数据,然后再将此扇区数据读出,比较数据是否一致。
注:不同的SD卡,在初始化的时候对SPI的速度要求不同,有的速度可以高一些,有的则不能太高。所以在测试中,可以对SD卡初始化的速度进行调节。
SD2测试
同上。
注:ZN-X上有两个SD卡接口,可以同时插接两个SD卡模块。1、因为SD卡是振南开发板上的重头,它围绕文件系统znFAT有大量的应用实验。两个SD卡接口是为了防止其中一个损坏或另有它用之后,还有候补可用。2、两个SD卡之间可以作一些【跨卡】的实验,比如卡卡之间拷贝文件、znFAT同时挂载多张SD卡的实验,这样可以把znFAT和文件系统的应用作得更全面更深入。
VS1003 MP3播放/录音测试
说明:ZN-X上有一个MP3解码播放模块,同时它还可以进行录音。单片机只需要将MP3等音频文件的数据写入到VS1003中,即可实现播放;录音功能,VS1003可以将声音编码为ADPCM,单片机可读出存为WAV文件。
测试方法:
播放功能,如果要向VS1003写入MP3数据,我们就要去准备这个数据,涉及到数据存储,虽然可以把它存到SD卡或Flash中,但是这个步骤比较繁琐。我们使用VS1003内置的正弦音测试,它内部可以产生某一频率的正弦信号,让它通过解码,再通过模拟通道(音频DAC输出),最终播放出来,我们可以从耳机中听到频率对应的尖锐声音。通过这种方法可以简单测试解码播放功能。
录音功能,VS1003在使能录音功能之后,可以从耳机中听到麦克所拾获的声音,这被称为 LOOPBACK
TFT液晶测试
说明:ZN-X上是支持多种尺寸分辨率,多种接口的TFT液晶模块的。这里着重对ILI9325控制器的320X240分辨率的TFT模块进行测试。
测试方法:首先分别测试竖屏与横屏模式下的刷屏,然后显示一幅简单的图片(图片数据内置于单片机ROM中)。测试中可以指定刷屏颜色,或者以色块方式刷屏。
按键测试
说明:ZN-X上有5个独立按钮,他们分别与P1端口的几个IO相连,可以用于作简单的控制和交互。
测试方法:依次按下5个按键,以确认按键是否OK
摄像头测试
说明:ZN-X上有摄像头模块,它采用OV7670+FIFO的方式,这样就可以让51这种低端低速的单片机也可以获取到图像。
测试方法:51读取摄像头的图像实时的显示在TFT液晶上。这种测试方法,有一定局限性,也就是必须要搭配TFT液晶才能完成。因此,振南设计了无需TFT的测试方法,51读取摄像头模块图像,转为BMP文件格式,直接通过串口上传给PCPC存为图片,可直接打开看到图像。
DS18B20测试
说明:DS18B20是经典的初学者必学的温度传感器
测试方法:读取温度值实时显示出来
PCF8563测试
说明:PCF8563是经典的RTC芯片,即实时钟,它可以为我们提供年月日时分秒时间信息
测试方法:PCF8563常见的问题是晶振不起振,从而导致时间不走。所以,我们可以用程序检测时间秒是否变化,如果在5秒钟内,秒一直没有变化,则认识有问题。另外我们还可以读取PCF8563的时间信息显示出来,也可以向它设置新的时间。
AT24C64测试
说明:AT24C64是容量为8KBEEPROM芯片,通常用于存储一些小数据量的信息,比如ID号、字符串等。
测试方法:我们选取某一个地址,先向它写入一个字节,然后再读取这个地址,比较数据是否一致。
很多时候我们需要把数据烧录到EERPOM中,比如一些字模、素材、声音、图片等等。所以在AT24C64的测试中,附加了这些烧录和读取数据的功能。可以通过串口将PC上的文件下载到AT24C64中,或者将AT24C64中的数据上传到PC。同时还可以随意查看某个地址上的若干字节的内容,或向指定的地址写入字节。
AT45DB161测试
说明:AT45DB161是容量为2MBFlashROM,它的数据被组织成扇区或数据块的形式,通过ATMEL的缓冲技术,可以实现对它的单个字节的读写操作。
测试方法:选取某一地址,向写入若干个字节,然后再从这个地址读取数据,比较数据是否一致。
同样,对于AT45DB161也附加了数据的下载和上传功能。也可以向指定地址写入字节,或查看某个地址上的数据。
TLC549测试
说明:TLC549是一颗8ADC
测试方法:不断读取ADC的值,调节电位器,观察ADC值是否相应变化。
TLC5615测试
说明:TLC5615是一颗10DAC
测试方法:在DAC输出上产生一个锯齿波,观察LED的明暗变化。附加功能:产生一个给定的电压。
16X16点阵测试
说明:ZN-X的基础模块上有一个16X16LED点阵屏。用它可以一些简单的字符图案的显示,以及滚动效果。
测试方法:在点阵屏上显示一些简单的演示效果,观察是否显示正常。附加功能:可以随意点亮某一个或多个LED点。
数码管测试
说明:4位数码管,可以显示410进制数或浮点数。
测试方法:在4位数码管的每一位上循环显示0-9这十个数。也可以显示指定的某一个数值。
触摸功能测试
说明:ZN-X上的TFT液晶是有触摸功能的,这样可以实现较为复杂的人机交互。
测试方法:读取触摸芯片的坐标数据,实时地显示出来。观察数据变化是否与触摸的位置同步。
以太网控制器ENC28J60硬件测试
说明:ZN-X上是可以接以太网ENC28J60模块的,通过它网络的世界就此打开。
测试方法:此测试不涉及TCP/IP方面的测试,只是对ENC28J60的接口和硬件进行基础的硬件测试,以确保芯片是完好的。
NRF24L01测试
说明:ZN-X是可以进行RF射频无线通信的,模块使用NRF24L01+芯片。
测试方法:初步地进行硬件接口和芯片的测试。然后可进行简单的数据通信测试:一个为发射,一个为接收,完成一个数据包的收发和验证,即说明数据通信成功。
可以看到,这是一个庞大的测试集合,每一个功能模块的测试都是精心设计的,而且还有一些附加功能,这是有一定实用价值的。


使用特权

评论回复
地板
znmcu|  楼主 | 2016-6-16 23:26 | 只看该作者






PC端的串口终端软件有很多种,比如我们经常用的串口助手、Windows自带的超级终端,还有SecureCRT,它们都可以实现串口命令和数据的发送和接收。但是我们这里选用超级终端,备选SecureCRT。为什么?因为它们可以实现SHELL系统中的按键发送功能(一般的串口助手需要在输入框里输入要发送的字符或数据,然后按“发送”按钮,这不符合SHELL命令行的习惯和风格。我们需要键盘输入,即时发送,回车后命令立即运行!
超级终端虽然是WINDOWS内置的原生串口工具,但是很多人并不了解它。这里振南对它进行一个介绍。
超级终端在“开始-程序-附件-通讯”中,第一次使用的时候,它会让你填写区别什么的,你填1即可。
随便输入一个名称。
我们选择一个串口号(ZN-X配送了USB转串口模块,正确安装驱动之后,即可得到一个虚拟串口,这里就选择这个虚拟串口的串口号即可,在振南的电脑上是COM7
振南开发的整板测试实验中使用的波特率为115200bps,所以超级终端也设置为115200,数据流控制选择无。
点击“属性”按钮。
如图中进行设置。OK,接下来,我们就可以开始对ZN-X进行SHELL整板测试了!!(前提ZN-X开发板已经烧录了振南的整板测试程序)
开发板正确连接之后,上电即可看到上面的内容。
振南的这个整板测试,已经作得比较完善,是有完备的帮助信息的,你可以输入“?”或“h”或“help”去查看关于某个命令的详细介绍以及范例。比如下图:
我们甚至可以看到这个系统中所有命令集合:
为什么要选SecureCRT作为备选软件,因为有些用户对于超级终端的界面可能有些不太习惯,或者觉得有些乱,窗口小。
至于SecureCRT的设置和使用方法,振南会在别的**和教程中进行介绍。
好,接下来,振南要分若干个章节来讲解通过SHELL中的命令对ZN-X上的功能模块进行测试的方法。


使用特权

评论回复
5
znmcu|  楼主 | 2016-6-16 23:27 | 只看该作者





这里振南使用SHELL命令系统对ZN-X上的LED环进行测试。
说明:ZN-X开发板上有一圈LED,很多人都觉得这种设计很新奇,我们可以作一个环状流水灯,这比传统的、我们早已玩腻的直线流水灯更有意思。这一圈LED的作用还只于此,每一个LED都与板上关键的信号相连(主要是一些片选、中断以及使能信号),它的亮灭代表了信号的变化。这样就可以很直观地知道某一个信号是否有问题。
SHELL平台测试命令:


使用特权

评论回复
6
znmcu|  楼主 | 2016-6-16 23:28 | 只看该作者







这里振南使用SHELL命令系统对ZN-X上的第一个SD卡进行测试。
说明:振南的ZN-X开发板上有两个SD卡模块的接口,可同时插接两个SD卡。这里我们对第一个SD卡进行测试。
具体测试方法请见《ZN-X各个功能模块的测试方法》 http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:
SD卡这种东西,对于初始化时的SPI时钟比较敏感。所以振南设计可调节初始化时SPI速度的参数。这个DELAY其实就是驱动程序中SPI时钟上的一个延时,这个DELAY我们设置的最大,SPI越慢。初始化时SPI越快,我们测试的过程越长,但是SD卡初始化成功的机率越大。到底DELAYSPI时钟速度之间的关系是怎样的?振南可以给出一个参考值,当DELAY=20时,SD卡初始化时的SPI时钟频率大约是5KHz左右。



使用特权

评论回复
7
znmcu|  楼主 | 2016-6-16 23:30 | 只看该作者






这里振南使用SHELL命令系统对ZN-X上的第二个SD卡进行测试。
说明:这里对振南ZN-X上的第二个SD卡进行测试,测试方法与第一个SD卡相同。
SHELL平台测试命令:


使用特权

评论回复
8
znmcu|  楼主 | 2016-6-16 23:31 | 只看该作者




这里振南使用SHELL命令系统对ZN-X上的VS1003 MP3播放与录音功能进行测试。
说明:这里对振南ZN-X上的VS1003 MP3解码播放及录音功能进行测试。
具体的测试方法请详见《整板测试【各个功能模块的测试方法】http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:


使用特权

评论回复
9
znmcu|  楼主 | 2016-6-16 23:33 | 只看该作者






这里振南使用SHELL命令系统对ZN-X上的TFT液晶的显示功能进行测试。
说明:这里对振南ZN-X上的TFT液晶的显示功能进行测试。ZN-X其实是支持很多的TFT液晶模块的,它有两个TFT液晶接口,基本上兼容了市面上所有的TFT液晶接口(这个接口还可以用于功能扩展,比如可以插接一些新的模块,振南研发的一些新的模块,有一些也是通过这个接口来插接的。)
具体的测试方法请详见《整板测试【各个功能模块的测试方法】http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:
演示效果:


使用特权

评论回复
10
znmcu|  楼主 | 2016-6-16 23:34 | 只看该作者






这里振南使用SHELL命令系统对ZN-X上的5个按键进行测试。
说明:这里对振南ZN-X上的51个按键进行测试。
具体的测试方法请详见《整板测试【各个功能模块的测试方法】http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:


使用特权

评论回复
11
znmcu|  楼主 | 2016-6-16 23:36 | 只看该作者






这里振南使用SHELL命令系统对ZN-X上的摄像头模块进行功能测试。本实验一部分功能要与TFT液晶相配合,实现摄像头图像的显示,所以请首先将TFT液晶测试通过。此测试中考虑到了可能没有TFT液晶的情况,此时可使用图片传输功能,将摄像头图像上传到电脑上以BMP文件方式打开显示。
说明:这里对振南ZN-X上的摄像头模块进行测试。
具体的测试方法请详见《整板测试【各个功能模块的测试方法】http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:
注:振南一直在考虑如果用户没有显示模块,比如TFT或其它具有显示功能的器件,如何将摄像头模块采集到的图像输出显示出来?!虽然振南这是可以搭配摄像头模块一起购买TFT液晶显示模块,以便让用户可以完成图像的显示和测试。但是很多用户并不愿意多花钱去配购TFT液晶,他们说:“我只需要摄像头采集图像,我不需要显示,我们是将图像传输到远端或服务器上的,在本地我们不需要显示!!”但是没有显示模块,用户又如何方便快捷的测试摄像头是否工作正常呢?在看不到图像的情况下,谁也不能确定摄像头模块一定是OK的。所以,振南设计了这次的测试实验,将摄像头采集到图像转为WindowsBMP图像的16位色格式(RGB555),以串口为传输链路,以XMODEM为传输协议(这是一种极为经典的老牌的数据传输协议,它的传输机制可以保证数据传输的绝对正确!!)。这样,我们就可以在电脑上打开BMP文件,看到图像。
实验效果:


使用特权

评论回复
12
zhongfushun| | 2016-6-17 08:07 | 只看该作者
是开源的吗?

使用特权

评论回复
13
znmcu|  楼主 | 2016-6-17 21:05 | 只看该作者
开源的

使用特权

评论回复
14
笑鸟007| | 2016-6-18 17:06 | 只看该作者
怎么没说znFAT呢?

使用特权

评论回复
15
znmcu|  楼主 | 2016-6-18 21:22 | 只看该作者
会的,围绕ZN-X,后续还回发布大量实验和教程。这个整板测试,只是对开发板底层和硬件进行的测试,以便广大用户对自己购买的ZN-X进行测试和验证。

使用特权

评论回复
16
znmcu|  楼主 | 2016-6-28 16:14 | 只看该作者
通过振南SHELL系统进行整板测试 之 测试板上的DS18B20温度传感器(实时显示当前温度)
原文出处:http://www.znmcu.cn/znx_51_alltest_shell_ds18b20.html

这里振南使用SHELL命令系统对ZN-X上的DS1B20温度传感器进行测试
DS18B20属于ZN-X开发板上的基础性实验,所谓基础性实验主要是面向广大的单片机入门初学者的,这些基础性实验,比如DS18B20、点阵屏、数码管、ADC/DACEEPROM等等,振南把它们专门进行了归类,集成到了一个模块上,这就是振南ZN-X上的【基础实验模块】)。
说明:这里对ZN-X板上的DS18B20进行测试。
具体的测试方法请详见《整板测试【各个功能模块的测试方法】http://www.znmcu.cn/znx_51_alltest_fangfa.html
SHELL平台测试命令:


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝