正在给板子写出厂测试程序, 买的12864型号是JLX12864C.
STC官方给的例程是并行通讯, 好使.
但是想在测试程序中改为串行通讯, 这样就不会和外接的XRAM的读写冲突.
找了前面同学写好的串行通讯例程, 将控制引脚都改成和原理图一样的管脚, 测试不好使.
写测试程序, 单独测试P2, 看看是否写入的值和读出的值一样? 结果发现 PSB(P2^4)写入0, 读出的是1.
PSB设置为1时, 是ST7920-12864的并行通讯方式.
PSB设置为0时, 是ST7920-12864的串行通讯方式.
为啥PSB无法写为0呢?
先将ST7920-12864模块从板子上拿掉, 再单独测试P2口, 写入0, 读出是0, 写入1, 读出是1.
这样就可以确认, 是ST7920-12864上的PSB引脚有问题, 不管如何设置, PSB都是1.
是否在板子上上拉了? 还是直接接到了5V?
买料的时候, 整了10块JLX12864C.
拆一块看看, 拆完就废了, 不管了.
用显微镜和外用表配合, 可以看到:
板子下方的排孔从右往左数, 第6个孔是PSB.
板子下方的排孔, 左数第1个是GND, 第2个是VDD(5V)
PSB连接到板子右上方的R4的右边.
R4原来有一颗0R电阻, 现在已经被我挑掉了.
R2左边的焊盘和R4左边的焊盘是连着的, 和排孔上的VDD是连通的.
R5左边和R4右边的PSB是相连的.
R5右边是和排孔上的GND相连的.
这样就可以分析出结果了.
厂家给我时, 在R4上焊接了一颗0R电阻, 这样默认就是并行通讯方式.
如果厂家不在R4上焊接电阻, 而在R5上焊接0R电阻, 这样默认就是串行通讯方式.
厂家这么做的原因 : 可以为用户省下一根IO(PSB).
但是也有坏处, 如果用户自己想控制并行还是串行通讯方式, 就需要自己用烙铁将R4和R5挑掉.
当时看到这里, 就尝试将R4挑掉了. 再用前面同学写好的串行例程跑起来, 好使.
厂家的R4电阻用0R, 如果用户做实验时, 将GPIO初始化成推挽输出后, 将PSB设置为0, 不就相当于VCC/GND短路了么? 会不会烧毁板子啊?
感觉厂家这里的R4, 整个1K或470R的电阻都行啊, 为啥要搞成0R呢? 是不是有点考虑不周?
拆板子时, 怕板子下面还有东西, 就先都拆干净了, 再量的. 装不起来了, 做实验的这块JLX12864C废了.
如果以后想挑掉R4, 直接在JLX12864C背面就能看到. 不用拆模块, 动一下烙铁就好, 小事.