Ponieważ udało mi się dostać płytkę do mmdvm w wersji dla STM32F446 Nucleo dzięki Arturowi SP5QIR i wyciągnąłem z swojego archiwum TRX KS-900 TEKK z czasów Packet Radio na 9600 Bd, całość może posłużyć do budowy małego Hotspota DMR. Schemat modemu mmdvm na STM32F4xx jest dostępny na stronie F5UII.

STM32F446 podłączony zostanie do komputera Orange PI Zero:

Na Orange Pi Zero zainstalowałem gotowy obraz PI-Star

=============================================================

Instalacja oprogramowania do kompilacji firmware STM32F446 na Ubuntu:

=============================================================

Aktualizacja oprogramowania:

sudo apt-get update
sudo apt-get upgrade

  • Usuwamy z oficjalnej dystrybucje kompilator gcc dla ARM jeśli taki jest zainstalowany na naszym systemie poleceniem:

sudo apt-get purge binutils-arm-none-eabi gcc-arm-none-eabi gdb-arm-none-eabi libnewlib-arm-none-eabi

  • Dodajemy "3rd party repository" poleceniem:
  • sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
    sudo apt-get update

  • Sprawdzamy wersje GCC na PPA repository:

sudo apt-cache policy gcc-arm-embedded

  • Instalacja niezbędnego oprogramowania i bibliotek poleceniem:

sudo apt-get install build-essential git gcc-arm-embedded qemu-system-arm symlinks expect autoconf libtool pkg-config libusb-1.0-0 libusb-1.0-0-dev

=======================================================================

Instalacja oprogramowania do kompilacja firmware STM32F446 dl Debian/Pi-Stra:

=======================================================================

Aktualizacja oprogramowania:

sudo apt-get update
sudo apt-get upgrade

Instalacja niezbędnego oprogramowania i bibliotek poleceniem:

sudo apt-get install git gcc-arm-none-eabi gdb-arm-none-eabi libstdc++-arm-none-eabi-newlib autoconf libtool pkg-config libusb-1.0-0 libusb-1.0-0-dev

=======================================================================================

Nastepnie etap to instalacja i kompilacja firmware dla STM32F446 taka sama jest dla Ubuntu/Debian/Pi-star:

Instalacja źródeł openocd (będzie używane do wgrywanie firmware do Nucleo):
git clone https://github.com/ntfreak/openocd
cd openocd
./bootstrap
./configure
make
sudo make install

  • Pobieramy źródła MMDVM :
    git clone https://github.com/g4klx/MMDVM
    cd MMDVM
    git clone https://github.com/juribeparada/STM32F4XX_Lib

  • Musimy wykonać edycje pliku Config.h gdzie mamy definicje częstotliwości zegara zewnętrznego oraz rodzaj podpiętego modemu do STM32:

Wybieramy definicje zewnętrznego zegara np:
#define EXTERNAL_OSC 12000000

oraz definicje pinów dla STM32F4xxx:
#define STM32F4_NUCLEO_MORPHO_HEADER

Należy pamiętać aby ustawić w znaki // przed #define ARDUINO_DUE_ZUM_V10

// For the ZUM V1.0 and V1.0.1 boards pin layout
// #define ARDUINO_DUE_ZUM_V10

  • Kompilacja firmware dla STM32F446:

make nucleo

  • Po podłączeniu do USB komputera STM32F446 robimy wgrywanie firmware:

sudo make deploy

Poniżej wynik wgrywania:

/usr/local/bin/openocd -f /usr/local/share/openocd/scripts/interface/stlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x.cfg -c "program bin/mmdvm_f4.elf verify reset exit"
Open On-Chip Debugger 0.10.0+dev-00563-gda4b2d5 (2018-10-28-11:03)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
none separate
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Info : STLINK v2 JTAG v29 API v2 SWIM v18 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.259960
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 3333 for gdb connections
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08009d54 msp: 0x20020000
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
adapter speed: 4000 kHz
Programming Started
auto erase enabled
Info : device id = 0x10006421
Info : flash size = 512kbytes
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000044 msp: 0x20020000
wrote 65536 bytes from file bin/mmdvm_f4.elf in 1.892660s (33.815 KiB/s)
Programming Finished
Verify Started
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20020000
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20020000
verified 62136 bytes in 0.158769s (382.189 KiB/s)
Verified OK
Resetting Target
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
adapter speed: 1800 kHz
shutdown command invoked

Jeśli wszystko powiodło się pomyślnie mamy wgrany firmware do STM32F446 i dioda zielona oznaczona na płytce Nucleo jako LD2 powinna mrugać.

Zostaje nam podłączyć płytkę interfejsu do STM32F446 i całość tworzy modem GMSK:

Możemy podłączyć dowolny interfejs do Nucleo np prosty interfejs wg opisu poniżej pinów:

  • RX audio = PA0
  • TX audio = PA4
  • RSSI = PA1
  • Ext Clk = PA15
  • PTT = PB13

Możemy skorzystać z poniższej tabeli do mapowania połączeń:

SMT32F446 Nucleo podłączamy do USB naszego komputera i możemy przystąpić do strojenie poziomów i kalibracji która została opisana w artykule: http://sp2ong.noip.pl/pl/blog/strojenie-mmdvm

Do ustawien poziomów RX i TX warto skorzystać też z opisów:

https://github.com/N4IRS/MMDVM-Install/wiki

Uwaga:
Szczegółowe opisy kompilacji firmware na STM32 znajdziecie w pliku mmdvm_stm32_build.pdf.
Aktualną wersje tego opisu można pobrać z: https://groups.yahoo.com/neo/groups/mmdvm/files/Software/

Problemem z jakim mogę spotkać się wykorzystując TRX KS-900 jest stabilność częstotliwości. Ten TRX był do pracy Packet Radio z szybkością 9600 ale Packet Radio nie jest tak czułe na stabilność częstotliwości jak DMR. TRX pracuje na kwarcach i jeśli stabilność częstotliwości odbioru i nadawania z czasem będzie się zmieniać może okazać się że ten TRX nie nada się do pracy DMR lub będzie wymagał np dołożenia wentylatora lub większego radiatora do chłodzenia. Można zmniejszyć napięcie zasilania do min czyli jak podaje manual zakres pracy 7.5 do 12 V. Lub radykalne rozwiązanie to zastosowanie tzw stabilizatora temperatury na kwarce np QH40A firmy Kuhne Electronics.

Poprzedni Post Następny Post

Cytowanie lub kopiowanie treści jest dozwolone w przypadku podania źródła pochodzenia tekstu i/lub autora.