CYPRESS 000: Kiparisas

Atnešė kažkada man prietaisiuką padaryta su Cypress Semiconductor mikroschema. Tai buvo cy7c68013a-128axc šimtasdvidešimtaštunkojis. Aš apie juos nė bum-bum, tik žinau, kad mano loginis analizatorius padarytas su tos pačios šeimos čipuku. Ir dar žinojau, kad softas gali būti serial eprome arba užkraunamas per USB iš kompo. Po nesėkmingo remonto (beja tai buvo labai gaidiškas moleview mikroskopas) nutariau kiek prasiplatinti savo žinias. Ir iš kinų užsakiau paprastesnę versiją- CY7C68013a-56VXC devboarduką.

Cypress CY7C68013a
Kiek suprantu “all included”.

Softą kroviausi iš Cypreso saito. Nusikroviau kelis failus, ko pasekoje turiu savo kompe “GPIF designer” -tai makrosu generatorius kuris padeda sukurti I/Okojyčių veikimą (kurio dar nesupratau), “Keil uVision2” – tai kompiliatorius/linkeris ir (kraunasi atskirai) Cypress Suite kur yra programa firmwarės užkrovimui- “control center”.
Iš “C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Drivers\Win7\x64” suinstaliuojam plokštelei draiverius. Ji turi pasimatyti kaip “Cypress FX2LP no EEPROM Device”, čia jei epromas nesuprogramintas arba jumperis išjungia tą mikroschemą.

Besinagrinėdamas šitą čipuką pastebėjau, kad nėra standartinio “Hello World” mirksiuko projekto! (nu gal neradau greitai). Todėl, kad pramušti savo smegenyse ledus, kiek pasinagrinėjus gavosi taip:

1. Pasileidžiam uVison ir darom naują projektą. Ten rašom nauja failą-projektą “betkas.uv2”. Pasirenkam čipuką.
2. Susikuriam naują C failą, “mainas.c”. Ji pridedam prie projekto “add files to group…”.
3. Į tą patį folderį persikopijuojam trys failus “fx2.h”, “fx2regs.h” ir “EZUSB.LIB”. Pastarąją biblioteką irgi pridedam prie projekto. Tikrai rasim failus kažkur tarp pavyzdukų.
4. Jei norėsim programuoti serial eprom, persikopijuojam failą “Hex2bix.exe”.
5. Į failą “mainas.c” parašom tokią programą:

#include “fx2.h”
#include “fx2regs.h”

void main(void)
{
IFCONFIG = 0x00; // set the ports as general-purpose I/O
OEA |= 0xFF; // set PORT A as outputs
for(;;)
{
IOA |= 0x01; // set PA0 high
EZUSB_Delay(200); // delay for ~200 ms

IOA &= ~0x01; // set PA0 low
EZUSB_Delay(200); // delay for ~200 ms
}
}

6. Einam į “options for Target…” ir ten prie OUTPUT pažymim, kad norim “HEX” failo.
7. Einam į “options for Target…” ir ten prie “BL51 Locate” nuimam varnelę, o grafoje “Code Range:” rašom “0x80-0x0FFF”, o “Xdata Range:” rašom “0x1000”.
8. Sukompiliuojam programą su “Build target” arba “Rebuild all”. Gaunam hex failą:

Build target ‘Target 1’
compiling mainas.c…
linking…
Program Size: data=11.0 xdata=4473 code=132
creating hex file from “betkas”…
“betkas” – 0 Error(s), 0 Warning(s).

9. Dabar su Cypress USB Control Center galime įkelti hex failą į kontrolerio RAM. Turi pradėti mirksėti vienas LED1 (arba PA0 keisti savo lygį).
10. Jei norim šį programinį šedevrą įrašyti į epromą, reikia dar pasidaryti automatinį hex konvertavimą. Tai pasidaro tuose pačiuose “options for target”, skyrelyje “output”, skyrelyje “run user program” rašom “hex2bix -i -f 0xC2 -o betkas.iic betkas.hex”
Susikompiliuoja ir gaunasi kitas failas:

Build target ‘Target 1’
compiling mainas.c…
linking…
Program Size: data=11.0 xdata=4473 code=132
creating hex file from “betkas”…
User command #1: hex2bix -i -f 0xC2 -o betkas.iic betkas.hex
Intel Hex file to EZ-USB Binary file conversion utility
Copyright (c) 2012-2013, Cypress Semiconductor Inc.
153 Bytes written.
Total Code Bytes = 132
Conversion completed successfully.
“betkas” – 0 Error(s), 0 Warning(s).

11. Dabar su tuo pačiu “usb control” galima užprogramuoti ROMą. Neužmirškit jumperio ir programuojam su komanda “program 64kb eeprom”.

Štai jums ir “Hello World” ir padarytas!

6 replies on “CYPRESS 000: Kiparisas”

  1. o kiek kainuoja tokios mikrės ir pastarasis dev boardas? ir pagal galimybes maždaug kuriai atmegai prilygtu?

  2. Kaina US $6.65 su pristatymu (devboard). Dėl lyginimo su atmega… negalima lyginti. Procesoriukas (8051) sukasi ant 48MHz, RAM/ROM dydis nėra labai jau toks (16kb). Tačiau tai pilnas hardwarinis USB. T.y. iš programerio pusės (kiek supratau aš kol kas dabar) tereikia tik isiterpti truputi kodo į esamus griaučius ir viskas, kas susije su USB vyksta automatiškai. Padaryti web kamera, datalogerį, oscilografą ir t.t. galima labai lengvai. Ką ir įrodo, kad visokie USB prietaisiukai dažnai daromi su tokiais čipais (USBee analizatorius, mano minėtas moleview USB mikroskopas ir panašiai).
    Viduje aišku galimas “džentelmeno rinkinys”: I2C, GPIO, UART, taimeriai…

    Esmė visdėlto tikras USB2.0 su visu kalnu pertraukimu ir FIFO. Ir tiesioginis ryšis periferija-USB.

    Plačiau pasakoti negaliu, nes dar nežinau.

  3. FX2 lyginti su atmega negalima, nes FX2 yra specializuotas USB2.0 valdiklis, kurio pagrindinė paskirtis – perduoti didelius duomenų srautus.

    Šį žvėriuką programavau naudodamas GCC įrankius, kartu su FX2LIB.

    Teko programuoti ir galingesnį broliuką FX3. Ten jau USB3.0 ir sėdi ARM9.

    Kieno duomenų srautus ruošiatės perdavinėti? Ar tai kolkas tik pradiniai bandymai, be konkretaus panaudojimo?

  4. Sorry už kvailą klausimą: bet ar 8051 procesorių mašininis kodas vienodas? T.y. ar pakoregavus registrų pavadinimus ir adresus tas pats kodas tinka visiem 8051?

    Ką noriu išsiaiškinti: C man nesuprantamas, pažaist su atmegom naudoju Bascom-AVR, matau kad yra ir Bascom-8051, kuris teigia, kad jo sukompiliuota programa tinka visiem 8051, tada būtų idomu pasižaisti.

  5. Tikrai negaliu kategoriškai atsakyti. Čia gal labiau datašytas padėtu, bet teoriškai turi sutapti. Bent jau pačios asemblerio komandos, tačiau gali būti, kad tiek atminties suorganizavimas, jau nekalbant apie visą hardwarinį inicializavimą gali skirtis iš esmės.
    O kame problema? Norima turima programą perketi į kitą platformą? Jei programa parašyta moduline forma: “draiveriai” atskirai, protas atskirai, tai jokių problemų turėtu nekilti. Tiesa dar kartais iškyla problemos su defaultinių kintamųjų dydžiais (char vs int ar panašiai).

  6. Problema ne programos perkėlime, o C kalbos nemokėjime.

    Tiesiog šitas čipas yra prieinamos kainos ir bent teoriškai atveria didesnes galimybes (daugiau interuptu, greitesnis, USB ir dar nezinau kas).

    Kadangi pamačiau mistinį 8051 ir susiejau su sau suprantamu IDE + compileriu (Bascom) tai ir primečiau kad tai galėtų atverti kelią didesniem dalykam nei atmega (nors praktiškai kolkas ir tų pajėgumų visai užtenka).

Leave a Reply

Your email address will not be published. Required fields are marked *