Qi/使用teensy 2.0++ 开发板模拟U盘

Created Mon, 16 Dec 2019 21:56:00 +0800 Modified Mon, 16 Dec 2019 21:56:00 +0800
810 Words

Teensy 开发板简介

teensy 是一种基于AVR或ARM处理器的USB开发板, 可以用来开发或试验各种USB应用, 我购买的为TEENSY 2.0++开发板, 因为这是在国内所有TEENSY 开发板中最为便宜的型号. 它大概长下面这个样子.

tpp_main

本文基于teensy 实现简易版U盘的, U盘内容为镜像一fat分区下的raw格式文件, 也可以配置为使用随机数据填充内容.

材料

  • Teensy 2.0++ 开发板: 大概30元
  • SD卡模块单片机 Micro SD卡模块CH376S SPI接口 迷你TF卡读写器: 大概2块钱
  • tf卡一张: 不要太好的, 买几年前的型号, 大概10元钱

编译模拟U盘程序

我已经调试好了一份可工作的模拟U盘的程序, 下载地址: https://github.com/atmgnd/Teensy2ppSD , 使用下面的命令下载:

git clone https://github.com/atmgnd/Teensy2ppSD.git
cd Teensy2ppSD
git submodule init
git submodule update

安装avr-gcc 编译器及C库:

sudo apt-get install -y gcc-avr
sudo apt-get install -y avr-libc

使用下面的命令编译:

cd Teensy2ppSD/Teensy2pp/MassStorage
make

编译生成的MassStorage.hex 程序就是可以在TEENSY 开发析上运行的目标可执行程序. 将其刷写到开发板上, 就可以实现使用tf卡模拟U盘了.

烧录程序到开发板

首先需要去TEENSY官网下载Teensy Loader, 下载链接: Teensy Loader

Teensy Loader 的使用说明: https://www.pjrc.com/teensy/loader_linux.html

按照上面网页中的说明将上一节中编译的目标程序烧制到开发板.

连接spi tf读卡器到teensy

按照下面的表格将TEENSY与读卡器连接起来:

TEENSY 2.0++ TF卡读卡器
VCC VCC
B3 MISO
B2 MOSI
B1 SCK
B0 CS
GND GND

TEENSY开发板和读卡器上都有引脚标注, 接好以后如下:

TEENSY SPI

连接PC

插入SD卡连接PC, 如果没有问题, 就可以看到模拟的U盘了. 如下:

xxx@TM19:~/code/github/Teensy2ppSD$ sudo lsblk /dev/sdc
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdc      8:32   1 466.1G  0 disk 
└─sdc1   8:33   1  14.9G  0 part 

修改Teensy2pp/MassStorage/MassStorage.c中的media_blocks变量就可以实现修改模拟U盘的大小, 如上, sdc1的大小为15G, 而sdc大小为466G, 就是通过这样实现的. 至此, 我们完成了U盘的模拟程序.

性能

在Windows 下实测可以达到300KB/S, 不是太快. 在Linux下似乎要更慢一些.

Reference