logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Hello World na DA14585 czyli programowanie opaski fitness cz. 1

Mlody_Zdolny 24 Maj 2023 00:52 3942 3
  • Hello World na DA14585 czyli programowanie opaski fitness cz. 1
    Niedawno przedstawiłem wnętrze taniego smartbanda z interfejsem BT, kolorowym wyświetlaczem i kilkoma funkcjami typowymi dla tego segmentu https://www.elektroda.pl/rtvforum/topic3975641.html. Teraz opiszę jak zabrać się za programowanie tego układu.

    Opaską steruje SoC DA14585 firmy Dialog (Renesas) posiadający rdzeń ARM Cortex-M0. Ma 96 kB pamięci RAM i 64 kB pamięci jednorazowo programowanej (OTP). Jak się okazało, można układ programować, gdyż posiada zewnętrzną pamięć FLASH połączoną przez SPI. Ponadto, na płytce istnieją mini pola do podłączenia interfejsu UART.

    Hello World na DA14585 czyli programowanie opaski fitness cz. 1

    Odkrycie interfejsu UART umożliwiło mi nawiązanie komunikacji i wgrywanie własnego softu za pomocą narzędzi programistycznych udostępnionych przez Renesas. Dobre jest to, że Renesas wydał wersje tych narzędzi dla Windowsa i Linuxa.
    Narzędzia i biblioteki przydatne do programowania DL14585:

    SmartSnippets™ Toolbox
    Hello World na DA14585 czyli programowanie opaski fitness cz. 1
    Zestaw narzędzi umożliwiających komunikację z DA15855. Posiada GUI ale może być używany z linii komend.

    SmartSnippets™ Studio
    Hello World na DA14585 czyli programowanie opaski fitness cz. 1
    Firmowe IDE Renesas, wciąż rozwijane, jeszcze nieco niedopracowane w porównaniu z Keil. Nie jest niezbędne, wolę Keila w tym zastosowaniu.
    Oba powyższe toole do pobrania z smartbond-development-tools
    Poradnik instalacji i korzystania ze SmartSnippets um-b-057

    Keil MDK 5.38
    Hello World na DA14585 czyli programowanie opaski fitness cz. 1
    IDE do tworzenia oprogramowania. Wersja tylko na Windows, ja zainstalowałem go na wine-8.0.1.
    Do pobrania z Keil MDK, po zarejestrowaniu i zalogowaniu.

    Software Development Kit SDK6.0.18.1182.1 for DA1453x, DA14585/6
    Zestaw bibliotek wraz z przykładowymi programami.
    Do pobrania z SDK po wcześniejszym zalogowaniu

    Przejściówka USB-UART
    Koniecznie na układzie FTDI, bo innych programator SmartSnippetsToolbox nie rozpoznaje :)

    Nie opisuję procesu instalacji bo robiłem to na linuxie, inaczej może być na Windowsie.
    Ogólnie instalacja przebiegła bez większych problemów. Jeżeli czegoś brakowało po prostu przeczytałem komunikat i doinstalowałem, myślę, że nie ma sensu tego opisywać. Ewentualnie jeżeli ktoś będzie chciał się pobawić i natrafi na problem zapraszam do zadawania pytań.

    Przygotowanie do programowania

    Płytka po wyjęciu z obudowy opaski jest dosyć nieporęczna, połączenia są wykonane z cienkich drucików i taśm, toteż konieczne było umiejscowienie jej na większej płytce "deweloperskiej".
    Wykorzystałem do tego uniwersalną płytkę, na której umieściłem trochę elektroniki oraz wykonałem połączenia z płytką wyjętą z opaski.
    Przydatne podczas programowania stało się wyprowadzenie sygnału RESET na zewnątrz.

    Hello World na DA14585 czyli programowanie opaski fitness cz. 1

    Ponieważ konwerter USB-RS232 działa z poziomami TTL, konieczne stało się użycie konwertera poziomów w postaci dzielnika rezystorowego na linii Tx oraz tranzystora przesuwającego poziomy z 3,3 na 5V na linii Rx konwertera.
    Na razie jest druciarnia, być może wykonam jeszcze jedną solidniejszą platformę z płytką DA14585.

    Hello World na DA14585 czyli programowanie opaski fitness cz. 1

    Pierwszy program na DA14535

    SDK dostarczone przez Renesas zawiera przykładowe projekty. Znajdują się one w lokalizacji
    DA145xx_SDK/6.0.18.1182.1/projects/
    Na sam początek warto załadować i skompilować któryś z projektów, bez własnych modyfikacji, aby sprawdzić działanie środowiska.
    Ja wybrałem projekt target_apps/peripheral_examples/blinky.
    Posiada on strukturę:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    Struktura jest jasna - oddzielone zostały pliki projektu w danym IDE oraz źródła programu.
    Analizując inne projekty łatwo dojść do wniosku, że Renesas w przypadku tego SoC preferuje Keil zamiast swojego SmartSnippets™ Studio.
    Jak wygląda projekt w innym IDE można się przekonać zaglądając np. do katalogu: projects/target_apps/ble_examples/prox_reporter/
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    U mnie projekty kompilowały się od razu więc przystąpiłem do tworzenia swojego projektu bazując na blinky.
    Posiłkowałem się przy tym wspomnianym wcześniej poradnikiem UM-B-057, gdzie opisana jest m.in. procedura tworzenia projektu na bazie istniejącego.
    Na początku zmieniłem nazwę projektu i jego lokalizację względem SDK zmieniając wszystkie ścieżki w pliku *.uvprojx na właściwe. Pozostawiłem pliki *.c i *.h aby struktura projektu wyglądała tak:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    Program wypisuje tekst na UART, który zawiera kolejne liczby pierwsze w formacie hex. Liczby są liczone w bardzo nieoptymalny sposób, wykorzystując dzielenie modulo.
    Czas trwania pętli zależy więc od aktualnie liczonej liczby pierwszej, im większa tym dłużej trwa.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Dodatkowo program steruje podświetleniem LED wyświetlacza IPS na zasadzie włącz/wyłącz. Rozgryzienie połączeń na tak małej płytce to nie lada wyzwanie. Dodatkową trudność stanowi obecność w obwodzie sterowania podświetlenia tajemniczego elementu przypominającego konwerter poziomów albo inny bufor, mający 4 wyprowadzenia Vcc, GND, input, output, oznaczony kodem EL1, w obudowie o wymiarach około 1x1 mm (dwa obok siebie w centrum zdjęcia).

    Hello World na DA14585 czyli programowanie opaski fitness cz. 1

    W każdym razie, podświetlenie sterowane jest od masy tranzystorem NPN a od plusa akumulatora wspomnianym buforem. Podając stan wysoki na bazę tranzystora i stan wysoki na wejście drivera podświetlenie IPS działa.

    Programowanie układu

    Odbywa się przez UART, ten sam, przez który będzie wysyłać tekst.
    Proces programowania nie ogranicza się tylko do wgrania hexa do pamięci FLASH. Ponieważ mikrokontroler DA14585 korzysta tutaj z pamięci FLASH zewnętrznej, najpierw jest wgrywany kod programatora, który obsłuży programowanie tej zewnętrznej pamięci.
    Następnie wykonywane jest czyszczenie FLASH (ERASE), wgrywanie hexa z programem i weryfikacja.
    Można to przeprowadzić ręcznie korzystając z GUI Toolboxa, ale ja od razu napisałem skrypt robiący to wszystko za mnie. Aby wgrać program muszę odpalić skrypt z konsoli i za chwilę nacisnąć RESET na dev-boardzie, reszta robi się sama.

    Kod: Bash
    Zaloguj się, aby zobaczyć kod



    Skrypt uruchamiający programowanie FLASH
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    Częsta zmiana portów powoduje, że ttyUSBxx też się zmienia, stąd poszukiwanie w pętli.
    Ścieżki oczywiście do poprawy.

    Próbowałem pogodzić Keila z zewnętrznym skryptem, ale bez sukcesu bo coś nie styka na łączu WINE-Linux.
    Po wgraniu programu i zrestartowaniu układu można włączyć terminal i obserwować co się pojawia oraz spoglądać na wyświetlacz, na którym powinno być widać mruganie podświetlania zgodne z tym, co widać na terminalu.
    Po paru minutach działania na terminalu można dostrzec coś takiego:
    Hello World na DA14585 czyli programowanie opaski fitness cz. 1

    Płytka kryje jeszcze wiele ciekawych funkcjonalności, których oprogramowanie i uruchomienie będzie ciekawym wyzwaniem.
    Są to m. in.
    - czujnik dotykowy,
    - czujnik przyspieszenia (I2C),
    - wyświetlacz IPS (SPI),
    - czujnik pulsu (I2C?),
    - BLE 5.0.
    Jak dobrze pójdzie swoje dalsze zabawy opiszę w następnych częściach.
    Załączniki:
    • user_periph_setup.h (2.67 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • main.c (2.12 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • user_periph_setup.c (2.7 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    Mlody_Zdolny
    Poziom 31  
    Offline 
  • #2 20594014
    gulson
    Administrator Systemowy
    Posty: 29347
    Pomógł: 148
    Ocena: 6026
    Dzięki za artykuł, sporo plusów! W końcu coś użytecznego można zrobić z tymi opaskami.
    Chyba każdy nie może się doczekać drugiej części!
    Jeśli chciałbyś utrzymać upominek, napisz do mnie z paczkomatem :)
  • #3 20594681
    Mateusz_konstruktor
    Poziom 37  
    Posty: 4196
    Pomógł: 268
    Ocena: 1103
    Mlody_Zdolny napisał:
    Ponieważ konwerter USB-RS232 działa z poziomami TTL, konieczne stało się użycie konwertera poziomów w postaci dzielnika rezystorowego na linii Tx oraz tranzystora przesuwającego poziomy z 3,3 na 5V na linii Rx konwertera.

    Tymczasem na stronie producenta ftdichip.com/products/ft232rl/ czytamy
    Cytat:
    Integrated level converter on UART and CBUS for interfacing to 5V – 1.8V Logic

    Chodzi o to, że ten układ scalony posiada wbudowane wyprowadzenia jedynie wymagające odpowiedniego podłączenia i mamy obsługę standardu 3,3V bez dobudowywania dodatkowych układów.
  • #4 20595743
    Mlody_Zdolny
    Poziom 31  
    Posty: 1439
    Pomógł: 109
    Ocena: 643
    Mateusz_konstruktor napisał:
    Chodzi o to, że ten układ scalony posiada wbudowane wyprowadzenia jedynie wymagające odpowiedniego podłączenia i mamy obsługę standardu 3,3V bez dobudowywania dodatkowych układów.

    Scalak ma taką możliwość, mój konwerter niestety nie ma, bo końcówka Vccio jest na stałe podłączona do +5 V.
REKLAMA