

Bcl4v2
You might be interested in some libopencm3 examples here.
- Size
- 60 × 60 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 55
- Nets
- 76
- Pads
- 291
- Tracks, vias
- 1,818, 123
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 25 Oct 2018
- Updated
- 30 Jul 2019
Overview
Bcl4v2 is an open-source printed circuit board by Yanisin, from the Yanisin/DotMatrix repository on GitHub. It is a 2-layer board of 60 × 60 mm with 55 parts on 76 nets, routed with 1,818 tracks and 123 vias.
It is built around the TLC5926IDW, TLC5945PWP and 74HC595, with the TBD62783APG, BSS138 and IRLML6402 among its other parts. Its parts include 15 connectors, 13 capacitors, 10 resistors, 6 ICs and 4 diodes. It belongs with the STM32 boards of this library.
Main components
6TLC5926IDW
SOIC-24-300mil-40℃~+125℃ 120mA 16 17V 30MHz 3V~5.5V 6% Built-in DC-DC Over-Temperature Protection (OTP) SOIC-24-300mil LED Drivers ROHSTexas InstrumentsLED DriversTLC5945PWP
HTSSOP-28-EP-40℃~+85℃ 16 30MHz 3V~5.5V 80mA PWM HTSSOP-28-EP LED Drivers ROHSTexas InstrumentsLED Drivers74HC595
SOP-16-40℃~+85℃ 1 100ns@5V,50pF 10MHz 2V~6V 74HC 8 Serial-to-Serial or Parallel Tri-State SOP-16 Shift Registers ROHSGRShift RegistersTBD62783APG
DIP-18-40℃~+85℃ 0.1mA 1uA 1uA 2V 30V 8 DIP-18 Darlington Transistor Arrays ROHSToshibaPower Distribution SwitchesBSS138
SOT-23-55℃~+150℃ 1 N-channel 1.1Ω@10V、1.2Ω@4.5V 1.2V 1.7nC@10V 17.5pF 340mA 350mW 50V 6.5pF N-Channel SOT-23 MOSFETs ROHShongjiachengMOSFETsIRLML6402
SOT-23-55℃~+150℃ 1 P-Channel 1.3W 110pF 12nC 145pF 20V 3.7A 400mV 633pF 65mΩ@4.5V P-Channel SOT-23 MOSFETs ROHSGuangdong HottechMOSFETs
README
README.mdDotMatrix
What is this?
A STM32F070CB driving a LED DotMatrix.
Prerequisities for building Firmware
-
You need an appropriate Cortex-M ARM toolchain. We suggest to use the ARM's GNU Embedded Toolchain for Arm . Please note that the
gcc-arm-none-eabiprovided by Ubuntu 18.04 is currently broken and can't be used. -
This project makes use of libopencm3 [blocked]https://github.com/libopencm3/libopencm3) and ChibiOS. In order to build
libopencm3you needPython 2. -
To download the firmware, you have two options:
- Via USB: You need
dfu-util 0.9+and a USB cable. Please not thatdfu-util 0.8will not work. - Via SWD: You need
openocdand aST-LINK v2 device
- Via USB: You need
-
Optional:
Docker
You might be interested in some libopencm3 examples here.
The pull requests there might be an interesting source of information as well.
You will also want to have the manuals for your hardware at hand. These are the most important for software development:
- Peripherals, memory layout, registers ... : STM32F030x4/x6/x8/xC and STM32F070x6/xB MCUs
- Pinouts, Electric Characteristcs, HW variants, clocks ...: STM32F070CB Product Specification
- Exceptions (NVIC), instructions ... : ARM® v7-M Architecture Reference Manual
Install & Build
Get the code:
$ git clone https://github.com/libopencm3/libopencm3.git
$ git clone https://github.com/ChibiOS/ChibiOS.git
$ git clone https://github.com/Yanisin/DotMatrix.gitWe provide a Dockerfile, containing the suggested toolchain, openocd, dfu-util and other tools as well. You can build the container with:
$ cd DotMatrix/
DotMatrix$ docker build -t gcc-arm-none-eabi-8-2018-q4 .Create a file named settings.mk in DotMatrix/src and provide an appropriate configuration.
You can use DotMatrix/src/settings.mk.example as input. This settings.mk works with the Docker container:
OPENCM3_DIR ?= /home/dev/app/src/libopencm3
CHIBIOS ?= /home/dev/app/src/ChibiOS
HW_VERSION = "HW_60x60_rev_0_5"
SUDO=
SIM=0
OOCD ?= openocd
OOCD_INTERFACE ?= stlink-v2-1
OOCD_TARGET ?= stm32f0xYou can start the container with:
DotMatrix$ docker run -it --privileged --expose 4444 \
-v /dev/bus/usb:/dev/bus/usb \
-v `pwd`/../libopencm3:/home/dev/app/src/libopencm3 \
-v `pwd`/../ChibiOS:/home/dev/app/src/ChibiOS \
-v `pwd`:/home/dev/app \
gcc-arm-none-eabi-8-2018-q4:latest /bin/bashYou need to compile libopencm3 before usage. This has to be done once.
With help of the toolchain container this is:
dev@59e291eed30d:~/app$ cd src/libopencm3/
dev@59e291eed30d:~/app/src/libopencm3$ makeChibiOS is compiled on demand.
To compile the firmware / demo of your interest, just go to the directory and issue $ make. For instance:
dev@59e291eed30d:~/app$ cd src/full/
dev@59e291eed30d:~/app/src/full$ makeThis should result in a binary build/full.elf.
Content of the package
The software demos live in the src directory. There are are three main demos avaiable:
src/stm32f070_miniblink- a simple demo just blinking the LEDsrc/GameOfLife- GameOfLife with all connected cells working together. Simple communication protocol over UART. The demo uses just libopencm3 for HW interfacing.src/full- the 'catch all' demo. Includes GameOfLife and other applications that are selectable with an 'applet selector'. Provides a communication layer over I2C and UART. Automatically detects the topology of the boards at startup and chooses a 'master board'. Is based on an RTOS (ChibiOS).
There are also other small testing projects and a simulator that allows you to run the 'full' demo on your host machine.
Flashing
Flashing is done using the make prg and make prg_usb commands.
See src/common.mk for other makefile commands.
SWD Interface
Attach the SWD interface of the MCU via stlink-v2 programmer and issue $ make prg
USB DFU Bootloaders
There are two USB bootloaders. One is burnt int the MCU from the manufacturer. This one can be used in case of emergency to write "more specialized" bootloader stored in the FLASH, and that is used the flash the actual firmware.
The MCU itself has a bootloader burnt from the manufacture. This one requires the Y1 oscillator popullated in order to work. It can be
Project Distributed Bootloader
There is a bootloader in src/dfu. Among other nice features this bootloader
allows to flash multiple interconnected boards at the same time.
Once compiled it can be flashed to ieach of the MCUs either using the stlink-v2
programer ( using make prg commad) or via the MCUs built in bootloader (using
the "make prg_bl" command).
If you want to use this bootloader (recommneded way), issue $ make prg_usb in
your project and connect the board over USB (or restart it, if it is already
connected. The flashing process will start as soon as the board reaches the
bootlader (you will see threee dots). If multiple boards are connected and
started at once, the firmware will be loaded to all of them.
The USB part of this bootloader seems to work even without Y1 resonator populated, but the manufacturer does not say that it should be relyable. If you have the the Y1 not populated keep this in mind.
MCU Manufacturers Bootloader
The MCU has a built in bootloader that is started if the BOOT0 pin is held hight
after reset is released. On the board there is reset circuitry with button.
If you hold this reset button for several seconds, you will get the board into
manufacturer provided bootloader. Among other ways (like USART, SPI, I2C) this
bootloader can program the flash via the USB DFU protocol. Use make prg_bl to
talk to this bootloader. This can be used to flash the project bootloader or
have the wonderfull feeling of running bare-metal. If you want to run your
project without the project bootloader, You have to compile the demo with
NO_BOOTLOADER=1.
Keep in mind that you can use this bootloader in USB DFU mode only if there is the Y1 resonator present. If the Y1 is not present, you will need to use the stlink-v2 or some other interface that this bootloader can handle even without oscillator. For details about this bootloader search for STs AN2606.
Memory layout
Even though that you are programming C, it is important to know the memory layout for debugging etc. The makefiles will take care of linking the code at correct addreses.
ROM is mapped at 0x08000000 and the layout is as follows:
| Address | Size | Usage |
|---|---|---|
| 0x0 | 0x4000 | Project Distributed Bootloader |
| 0x4000 | 0x1C000 | Your application code (interrupt vectors, .text, .data) |
RAM is mapped at 0x20000000 and the layout is as follows.
| Address | Size | Usage |
|---|---|---|
| 0x0 | 0x100 | Interrupt vectors (loaded from ROM) |
| 0x100 | 0x3F00 | Your application data (.data loaded from ROM, .bss) |
For the location of IO registers for peripherals, consult the ST manual
Hardware and mechanical parts
The currently used/latest HW is described in "pcb/60x60_dma". The board is designed with KiCAD but there is the schematics exported in PDF and some assembly hints with list of needed parts are added as well. The other folders in "src" are mostly unfinished various experiments/extension.
In the "mechanical" folder you can find the mechanical parts for 3D printing. For each board PCB you will need one disp_support.stl. The file is expected to be printed with 0.4mm nozzle and 0.15mm layer height. For connecting boards you can use joint_cross_1_5m.stl for each corner (in older revision of the board there is LED in the way so you need the use the one with the cuts for the LED).
Parts
55| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | Conn_01x05 | kicad_libraries_new:badger_Pin_Hdr_1x05_2.54mm_handsolder | J1, J2, J4, J5, J6, J7, J8, J9 |
| 4 | 100n | Capacitors_SMD:C_0603_HandSoldering | C6, C7, C8, C9 |
| 4 | Conn_01x01_Female | badger_footprints_kicad_4x:badger_mount_M3 | J10, J11, J12, J13 |
| 3 | 100n | Capacitors_SMD:C_0805_HandSoldering | C2, C4, C11 |
| 3 | 10k | Resistors_SMD:R_0805_HandSoldering | R1, R4, R13 |
| 3 | 4u7 | Capacitors_SMD:C_0805_HandSoldering | C1, C3, C10 |
| 3 | R | Resistors_SMD:R_0805_HandSoldering | R3, R15, R17 |
| 3 | SW_Push | kicad_libraries_new:badger_smd_button_KSS231G | SW1, SW2, SW3 |
| 2 | 220k | Resistors_SMD:R_0805_HandSoldering | R2, R14 |
| 2 | 220u | Capacitors_Tantalum_SMD:CP_Tantalum_Case-V_EIA-7343-20_Hand | C12, C13 |
| 2 | Shottky | kicad_libraries_new:badger_D_SOD-123_hand | D1, D2 |
| 1 | 100nF | Capacitors_SMD:C_0805_HandSoldering | C5 |
| 1 | 1k | Resistors_SMD:R_0805_HandSoldering | R5 |
| 1 | 74HC595 | SMD_Packages:SO-16-N | U4 |
| 1 | 820k | Resistors_SMD:R_0805_HandSoldering | R16 |
| 1 | BSS138 | kicad_libraries_new:badger_SOT-23_handsolder | Q1 |
| 1 | Conn_01x02 | kicad_libraries_new:badger_Pin_Hdr_1x02_2.54mm_angled_handsolder | J14 |
| 1 | Conn_01x04 | kicad_libraries_new:badger_Pin_Hdr_1x04_2.54mm_angled_handsolder | J15 |
| 1 | DS9166A-23 | kicad_libraries_new:badger_SOT-23_handsolder | U1 |
| 1 | IRLML6402 | kicad_libraries_new:badger_SOT-23_handsolder | Q2 |
| 1 | LED | LEDs:LED_0805_HandSoldering | D5 |
| 1 | LED_MATRIX_8x8_bicolor | kicad_libraries_new:badger_LED_MATRIX_8x8_60.2mmx60.2mm_bicolor | D3 |
| 1 | Resonator | kicad_libraries_new:badger_CSTCE_G | Y1 |
| 1 | STM32F070CBTx | kicad_libraries_new:badger_LQFP-48_7x7mm_Pitch0.5mm_handsolder | U2 |
| 1 | TBD62783A | Housings_SOIC:SOIC-18W_7.5x11.6mm_Pitch1.27mm | U5 |
| 1 | TLC5926 | Housings_SOIC:SOIC-24W_7.5x15.4mm_Pitch1.27mm | U6 |
| 1 | TLC5945PWP | kicad_libraries_new:HTSSOP-28_4.4x9.7mm_Pitch0.65mm_wo_thermal_pad | U3 |
| 1 | TXC-7C | Oscillators:Oscillator_SMD_EuroQuartz_XO53-4pin_5.0x3.2mm_HandSoldering | X1 |
| 1 | USB_OTG | Connect:USB_Micro-B | J3 |
Questions
How big is the Bcl4v2 PCB?
It measures 60 × 60 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Bcl4v2 use?
55 parts, built around the TLC5926IDW, TLC5945PWP, 74HC595 and TBD62783APG. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Bcl4v2 KiCad files?
From the Yanisin/DotMatrix repository on GitHub, at the commit this page was made from: the board is pcb/60x60_bicolor_dma/bcl4v2.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Bcl4v2 design in my own project?
Its repository states no licence, so its author keeps all rights: ask Yanisin before reusing the design.
More from Yanisin/DotMatrix
6- 2 layers51.6 × 97 mm

- 2 layers60 × 60 mm

- 2 layers60 × 60 mm

- 2 layers38 × 38 mm

- 2 layers60 × 60 mm

- 2 layers35.5 × 6 mm

Similar boards
- 2 layers111.8 × 37.5 mm

- 4 layers220 × 55 mm

- 2 layers99.1 × 99.1 mm

- 2 layers100 × 100 mm

Flipdot brose
julianschick/flipdot-brose
Microcontroller code (ESP32) and Circuit Design for controlling Brose Flipdot Modules.
185 parts5MIT - 4 layers20.3 × 90 mm

- 2 layers96.5 × 96.5 mm

Mat1
paliichukvladyslav/led-matrix-5x4
A simple 5x4 LED matrix board based on ULN2003, TD62783A, 74HC595.
36 parts1WTFPL - 2 layers223 × 45.3 mm

Displayboard
njKessel/ESP32s3-NetworkClock
ESP32-S3 smart clock with LED display, weather, moon phase, temperature, Google Calendar
60 parts1MIT - 2 layers100 × 100 mm
