hujj 发表于 2020-2-26 10:24

“玩板”+STM32F030Disco驱动TM1628控制芯片

<div class='showpostmsg'><p>&nbsp; &nbsp; 我从旧点钞机上拆下了一块有三位数码管和三个按键的控制板,板上的控制芯片是TM1628,准备将其改造为智能小车上使用,三位数码管正好可以用来显示电池的电压,三个按键可用来调整智能小车的设置(智能小车另有一块LCD5110显示屏),另外再添加五色LED信号灯的驱动。本次显示电池电压的ADC转换尚未完成,数码管、五色LED灯及键盘的驱动已经完成。</p>

<p>&nbsp; &nbsp; 下图是控制板的正面,安装了一个三位的数码管和三个微动按键:</p>

<p></p>

<p>&nbsp; &nbsp; 下图为控制板的反面,TM1628芯片在中央:</p>

<p></p>

<p>&nbsp;</p>

<p>&nbsp; &nbsp; 首先从网上搜集资料入手,找到了TM1628控制芯片的数据手册,基本掌握了芯片的功能和使用方法。这是一块带键盘扫描功能的LED驱动专用控制芯片,有28个引脚,最大可以扫描10*2个按键,可以控制从4位17段到7位11段数码管显示。在这块旧点钞机拆下的控制板上,三个按键占用了KEY1的KS1~KS3引脚,三位数码管的位码对应GRID1~GRID3引脚、段码对应SEG4~SEG10引脚,新添加的五色LED灯就利用了GRID4对应的SEG4~SEG8引脚。下图是TM1628管脚定义:</p>

<p> &nbsp;&nbsp; 这是控制板上TM1628芯片与三位数码管引脚对应资料:</p>

<p></p>

<p>&nbsp;</p>

<p>&nbsp; &nbsp; TM1628芯片的控制主要靠三个引脚,分别是STB(类似片选)、CLLK(时钟)和DIO(数据读写),按照数据手册给出的时序要求编写好驱动代码,通过逻辑分析仪调整好延时,芯片就被成功驱动起来了。在驱动过程中走了一点弯路,原来的控制板上CLK引脚没有上拉电阻(也许设计在点钞机主控板了),造成CLK设置成高电平时,不足1微秒就被自动拉低,无论如何调整延时都无济于事,最后是断开CLK引脚测试才发现这个问题,添加了上拉电阻后顺利地通过测试。</p>

<p>&nbsp; &nbsp; 为了方便添加五色LED灯,在控制板上添加了六脚排针,然后通过飞线连接到相应的芯片引脚上。下图是添加排针后控制板的正面:</p>

<p></p>

<p>&nbsp; &nbsp; 下图是反面,排针通过飞线与芯片引脚连接:</p>

<p></p>

<p>&nbsp; &nbsp; 下图为测试过程:</p>

<p></p>

<p>&nbsp;</p>

<p><br />
<br />
<br />
<b><font color="#5e7384">此内容由EEWORLD论坛网友<font size="3">hujj</font>原创,如需转载或用于商业用途需征得作者同意并注明出处</font></b></p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

ivy_tulip 发表于 2022-5-31 13:39

<p>楼主控制板STM32F030的控制引脚配置的是“Half-Duplex Master”模式吗?采用MOSI和sck两个管脚,然后用普通GPIO作为片选信号,这里有个疑问:MOSI是主发从收,则需要主收从发时咋办?TM1628芯片收发是同一根线的</p>

hujj 发表于 2022-6-1 07:46

ivy_tulip 发表于 2022-5-31 13:39
楼主控制板STM32F030的控制引脚配置的是“Half-Duplex Master”模式吗?采用MOSI和sck两个管脚,然后用普通 ...

<p>我没有使用硬件SPI,是用代码控制读写操作的。</p>
页: [1]
查看完整版本: “玩板”+STM32F030Disco驱动TM1628控制芯片