Mac系统搭建单片机运行环境-1-2

Mac系统搭建单片机运行环境-1-2

1.概述

这篇文章掀起了一个新篇章,打开了一扇从虚拟世界进入物理世界的大门。嵌入式系统是一个软硬结合的工程,既有软件的柔情似水还有硬件的骨干之美。
从此刻开始不仅有了大海还有了大陆。

第一篇文章介绍了windows系统搭建单片机运行环境,这篇文章介绍Mac系统搭建单片机运行单片机环境。
windows系统搭建单片机运行环境-1-1

2.推开单片机大门

2.1.目的

搭建一个最小单片机运行环境,就是打开大门的钥匙,我们的目的就是获取这把钥匙进入单片机世界。

2.2.制造钥匙

搭建单片机运行环境的过程划分了几个阶段,接下来按照每个阶段逐步实现完成环境的搭建。还可以根据实际情况选择需要的阶段进行搭建。

  • 1.准备硬件
  • 2.PC机与单片机通信
  • 3.烧录程序

2.3.准备硬件

名称 型号
单片机 STC12C2052
USB转UART模块 CP2102芯片
杜邦接口排线
面包板
面包板导线
LED灯 直插

2.4.PC机与单片机通信

单片机与PC机通信采用串口方式,PC机通过RS-232串口通信协议,将数据发送到单片机上,单片机接收的是TTL电平信号,因此需要通过芯片将RS-232转为UART将数据传输给单片机,这里采用的是CP2102芯片实现。

SILICon Laboratories公司推出的USB接口与RS232接口转换器CP2102/CP2103是一款高度集成
的USB-UART桥接器,提供一个使用最小化元件和PCB空间来实现RS232转换USB的简便解决方案。

1.制作ISP下载线

给单片机烧录程序的方式有三种:

  • ISP(In-System Programming)在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。
  • ICP (In-circuit programmer)在电路编程,使用SWD/JTAG接口。
  • IAP(In-Application Programming)指MCU可以在系统中获取新代码并对自己重新编程,即用程序来改变程序。

我们使用的是第一种ISP方式给单片机烧录程序,这个传输数据的线就是ISP下载线。

元件清单

名称 型号 数量
USB转UART模块 CP2102 1
芯片座 20PIN管孔 2
杜邦接头 3PIN和1PIN各一个 2
杜邦接口排线 长0.1m,4芯 1

USB转UART模块,芯片CP2102在网上就可以买到。

file

接线顺序
硬件准备完毕后就可以制作ISP下载线了,下面是接线原理图。

file

注意:

  • USB上芯片的TXD对应的是单片机的RXD
  • USB上芯片的RXD对应的是单片机的TXD

USB转UART模块 接线图
将杜邦排线一端接在USB转TTL模块上,之所以分成3PIN和1PIN的2个接头,是考虑到电源输出有3.3V和5V两种,单独分出1个接头可以很方便地选择单片机需要的电源,而且还可以当作电源开关来用。

file

芯片座 接线图
排线的另一端每条线剥去10mm左右的外皮,按照4根线的功能分别插入20PIN芯片座的管孔里面,用牙签或针压实。注意接线的顺序和技巧,心灵手巧是你的优点,只要认真考虑好结构,怎么接好看就怎么接。

file

接好线之后,再拿另外一个芯片座压在第一个芯片座的孔里,一款ISP下载线就制作好了。

file

单片机头部有个缺口,对应插座缺口位置,将单片机插到插座上。

file

2.安装驱动程序

ISP线制作好了之后,如果想让PC机识别并操作CP2102芯片 需要给芯片安装驱动程序,驱动程序安装可以到官网下载,或者网上找一个。

2.5.烧录程序

1.安装stcgal工具

在windows中使用STC厂家出的工具STC-ISP软件烧录程序,这个程序没有mac版本。我们可以使用开源项目stcgal工具完成程序烧录工作,并且这个工具既可以通过命令行模式操作,还可以与第三方IDE软件集成直接,界面化调用。
stcgal项目地址:github 地址:https://github.com/grigorig/stcgal

stcgal项目是python语言开发,因此可以通过pip方式安装,如果没有python可以通过homebrew工具安装。如果已有python可以直接通过安装stcgal,下面介绍完整的安装步骤

安装homebrew
运行下面的命令,出现镜像选择时,输入1选择1(中科大的下载源),直到安装完成。

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 

验证homebrew
输入下面的命令brew -v出现版本号,即为安装成功

brew -v
-------------------------------------
Homebrew 4.1.19-37-g275078d
fatal: detected dubious ownership in repository at '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'
To add an exception for this directory, call:

安装python

brew install python3

# 验证python是否安装
python3 --version

安装stcgal

pip3 install stcgal

# 验证是否安装成功
stcgal -h

2.准备测试代码

将下面的代码复制到文件中,命令为led.hex 注意后缀是hex

:10000300EF1F70011E144E600BE4FDEDC3947D5091
:04001300EF0D80F776
:0100170022C6
:0B002400B2977FFA7E0012000380F507
:03000000020018E3
:0C001800787FE4F6D8FD75810702002413
:00000001FF

3.烧录程序

  • 1.将USB-ISP下载线插入PC机
  • 2.查看当前ISP驱动设备
ls /dev/tty.*
# 下面就是ISP设备端口
/dev/tty.SLAB_USBtoUART   /dev/tty.usbserial-0001
  • 3.烧录程序
stcgal -p /dev/tty.SLAB_USBtoUART  -b 2400 led.hex

# 参数说明
-p:ISP设备端口
-b:设置波特率
led.hex 烧录的程序文件

如果出现下面的提示表示给单片机上电,这个时候需要将USB上对应 5V 引脚的PIN杜邦接口线拔下来,然后在插回去。程序才可以完成烧录。(此操作就是单片机冷启动)

stcgal -p /dev/tty.SLAB_USBtoUART  -b 2400 led.hex
Waiting for MCU, please cycle power:

烧录完成

stcgal -p /dev/tty.SLAB_USBtoUART  -b 2400 led.hex
-----------------------------
Waiting for MCU, please cycle power: done
Protocol detected: stc12a
Target model:
  Name: STC12C2052
  Magic: F202
  Code flash: 2.0 KB
  EEPROM flash: 4.0 KB
Target frequency: 6.822 MHz
Target BSL version: 5.8D
Target options:
  low_voltage_reset=high
  clock_source=internal
  watchdog_por_enabled=False
  watchdog_stop_idle=True
  watchdog_prescale=256
  eeprom_erase_enabled=False
  bsl_pindetect_enabled=False
Loading flash: 47 bytes (Intel HEX)
Switching to 2400 baud: checking setting testing done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:01, 328.53 Bytes/s]
Setting options: done
Disconnected!

2.6.用钥匙打开单片机大门

我们的测试程序就是点亮led灯,下面通过单片机点亮我们第一个led灯,单片机的大门就被我们打开了。

操作步骤

  • 1.将ISP线的USB插入PC机
  • 2.将单片机插入面包板
  • 3.将led灯的长脚插入面包板对应单片机右侧第一个引脚(20)位置,也就是单片机的VCC引脚
  • 4.将led灯的短脚插入面包板对应单片机右侧第二个引脚(19)位置,也就是单片机的P1.7引脚

file

2.7.stcgal工具使用说明书

https://gitee.com/mirrors/stcgal/blob/master/doc/zh_CN/USAGE.md