Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Hello World na DA14585 czyli programowanie opaski fitness cz. 1

Mlody_Zdolny 24 May 2023 00:52 2115 3
Computer Controls
  • 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ę:
    Code: bash
    Log in, to see the code

    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/
    Code: bash
    Log in, to see the code

    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:
    Code: bash
    Log in, to see the code

    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.
    Code: c
    Log in, to see the code

    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.

    Code: bash
    Log in, to see the code



    Skrypt uruchamiający programowanie FLASH
    Code: bash
    Log in, to see the code

    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.

    Cool? Ranking DIY
    About Author
    Mlody_Zdolny
    Level 25  
    Offline 
    Jestem kotem
    Mlody_Zdolny wrote 765 posts with rating 385, helped 46 times. Been with us since 2022 year.
  • Computer Controls
  • #2
    gulson
    System Administrator
    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 :)
  • Computer Controls
  • #3
    Mateusz_konstruktor
    Level 32  
    Mlody_Zdolny wrote:
    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
    Quote:
    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
    Mlody_Zdolny
    Level 25  
    Mateusz_konstruktor wrote:
    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.