83 lines
3.2 KiB
Markdown
83 lines
3.2 KiB
Markdown
clock generator (up to 125 MHz) using AD9850.
|
|
|
|
capabilities:
|
|
|
|
- up to 125 MHz@5V, 100MHz@3.3V
|
|
- display shows desired frequency in mHz
|
|
- actual output uses AD9850's 0.0291 Hz resolution
|
|
- square and sine wave output (and it's inverse)
|
|
- 3.3V and 5V output
|
|
|
|
hardware
|
|
========
|
|
|
|
the clock generator uses following parts:
|
|
|
|
- [WeAct MiniF4](https://github.com/WeActTC/MiniF4-STM32F4x1), based on a STM32F401CCU6
|
|
- Analog Devices AD9850, to generator the clock
|
|
- HD44780 LCD display (1x16), to display the set frequency
|
|
- rotary encoder, to set the frequency
|
|
- switch, to set the output voltage
|
|
- coin cell, to save set frequency
|
|
|
|
connections
|
|
===========
|
|
|
|
All pins are configured using `define`s in the corresponding source code.
|
|
|
|
code
|
|
====
|
|
|
|
dependencies
|
|
------------
|
|
|
|
The source code uses the [libopencm3](http://libopencm3.org/) library.
|
|
The projects is already a git submodules.
|
|
It will be initialized when compiling the firmware.
|
|
Alternatively you can run once: `git submodule init` and `git submodule update`.
|
|
|
|
firmware
|
|
--------
|
|
|
|
To compile the firmware run `rake`.
|
|
|
|
documentation
|
|
-------------
|
|
|
|
To generate doxygen documentation run `rake doc`.
|
|
|
|
flash
|
|
-----
|
|
|
|
There are two firmware images: `bootloader` and `application`.
|
|
The `bootloader` image allows to flash the `application` over USB using the DFU protocol.
|
|
The `bootloader` is started first and immediately jumps to the `application` if it is valid and the DFU mode is not forced (i.e. by pressing the user button on the board or requesting a DFU detach in the `application`).
|
|
The `application` image is the main application and is implemented in `application.c`.
|
|
It is up to the application to advertise USB DFU support (i.e. as does the provided USB CDC ACM example).
|
|
|
|
The simplest way do flash the `bootloader` image is using the embedded bootloader.
|
|
By pressing the BOOT0 button (setting the pin low) while powering or resetting the device, the micro-controller boot its embedded UART/USB DFU bootloader.
|
|
Connect a USB cable and run `rake dfu_bootloader`.
|
|
|
|
Once the `bootloader` is flashed, it is possible to flash the `application` over USB using the DFU protocol by running `rake flash` (equivalent to `rake dfu_application`.
|
|
To force the bootloader to start the DFU mode press the user button or short a pin, depending on the board.
|
|
Note: I use my own DFU bootloader instead of the embedded bootloader because I was not able to start the embedded USB DFU bootloader from the application.
|
|
|
|
The images can also be flash using SWD (Serial Wire Debug) in case the firmware gets stuck and does not provide USB functionalities.
|
|
For that you need an SWD adapter.
|
|
The `Makefile` uses a ST-Link V2 programmer along OpenOCD software (default), or Black Magic Probe.
|
|
To flash the `bootloader` using SWD run `rake swd_bootloader` (this will also erase the application).
|
|
To flash the `application` using SWD run `rake swd_application` (or `rake swd`).
|
|
To erase all memory and unlock read/write protection, run `rake remove_protection`.
|
|
|
|
debug
|
|
-----
|
|
|
|
SWD also allows to debug the code running on the micro-controller using GDB.
|
|
To start the debugging session run `rake debug`.
|
|
|
|
USB
|
|
---
|
|
|
|
The firmware offers serial communication over USART1 and USB (using the CDC ACM device class).
|