扫码打印机项目

1 背景:

之前做的一个项目,贴片LED配粉机每次工人操作需要手动写下产品信息和制作人还有时间,这个过程耗费了时间,而且有的坏粉还会被人为修改错误记录导致无法追查,所以设计一种扫码和自动打印标签的装置能把产品信息采集下来,并且与不同的信息组合生成新的一维码或者二维码,贴到产品或者工作记录上。

2 系统组成:

在这里插入图片描述
扫码枪是直接淘宝采购的扫码枪,通过485接到STM32串口2,打印机也是淘宝采购精普小型打印机,可以打印各种便签,并且只要输入相应的指令和ASCII码内容就能自动转换成一维码或者二维码,非常的方便。打印机通过232接串口3,DMA方式接收数据(DMA1通道2)。LCD为TFTLCD_HX8352C。

软件架构如图,可以看出比较简单:
在这里插入图片描述

3 学习到的技术:

  • UCOS使用

通过这个项目第一次接触到了嵌入式的RTOS,因为扫码打印机可能会出现同时扫码又打印的情况,使用操作系统管理各个任务,避免冲突和丢失,保证实时性。

UCOS系统简介
UCOS是Micrium公司出品的RTOS类实时操作系统, UCOS目前有两个版本:

UCOSII和UCOSIII。

UCOSIII是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。

UCOSIII提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。

UCOSIII是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的, UCOSIII结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。

本项目用到的就是UCOSIII。网上都有UCOS的模版,不再赘述。大概可分为,任务定义,任务创建(配置),任务编写,开始任务,任务初始化。这里扫码,打印,LCD显示都被定义成了一个个任务。

  • DMA使用

DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。
  DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。
  DMA方式主要适用于一些高速的外设I/O设备。这些设备传输字节或字的速度非常快。对于这类高速I/O设备,如果用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。
  
  发送过程中单片机无需参与。发送完后会产生中断告知单片机。由此可知用DMA可以节省单片机资源,让单片可以在同一时间里干更多事。​等于收发数据过程不再由CPU操心。

使用大约步骤

1、使能DMA时钟,并等待数据流可配置。 使能DMA时钟,才可配置DMA相关的寄存器。要对DMA的配置寄存器DMA_SxCR进行配置,则要等其最低位为0----即DMA传输禁止,才可配置。

2、DMA_SxCR(指定的外设–x)设置该流x,包括配置通道,外设地址,存储器地址,传输数据量、优先级等。

3、使能外设的DMA功能

4、使能DMA数据流,启动传输。

5、查询DMA传输状态。

配置通道,传输地址,字节数,方式等。具体可参考手册。

本项目中通过DMA得到传递扫码机得到的数据,STM32处理完再有DMA传给打印机,很方便。设置485串口中断,在串口中断处理函数中,然后串口DMA使能,通过DMA接收,把接收到的数据存入BUF。处理完后通过DMA发送。

  • LCD屏幕使用

不同型号都有相应的库函数,参考库函数即可,也不再赘述。

资源地址:https://download.csdn.net/download/weixin_44139651/12659966
github地址:https://github.com/ypg666/printer

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值