Სარჩევი:

MTP Arduino პროგრამირების მაგალითი: 5 ნაბიჯი
MTP Arduino პროგრამირების მაგალითი: 5 ნაბიჯი

ვიდეო: MTP Arduino პროგრამირების მაგალითი: 5 ნაბიჯი

ვიდეო: MTP Arduino პროგრამირების მაგალითი: 5 ნაბიჯი
ვიდეო: Arduino MegaADK #3 : Linux, mtp, Processing, Android, button, wiring, code 2024, ივლისი
Anonim
MTP Arduino პროგრამირების მაგალითი
MTP Arduino პროგრამირების მაგალითი

ამ ინსტრუქციებში ჩვენ ვაჩვენებთ როგორ გამოვიყენოთ SLG46824/6 Arduino პროგრამირების ესკიზი Dialog SLG46824/6 GreenPAK ™ მრავალჯერადი პროგრამირებადი მოწყობილობის (MTP) პროგრამირებისთვის.

GreenPAK მოწყობილობების უმეტესობა არის ერთჯერადი პროგრამირებადი (OTP), რაც ნიშნავს რომ მას შემდეგ რაც დაიწერება მათი არასტაბილური მეხსიერების ბანკი (NVM), მისი გადაწერა შეუძლებელია. MTP ფუნქციის მქონე GreenPAK– ებს, როგორიცაა SLG46824 და SLG46826, აქვთ განსხვავებული ტიპის NVM მეხსიერების ბანკი, რომლის დაპროგრამება შესაძლებელია არაერთხელ.

ჩვენ დავწერეთ Arduino ესკიზი, რომელიც მომხმარებელს საშუალებას აძლევს დაპროგრამდეს MTP GreenPAK რამდენიმე სერიული მონიტორის მარტივი ბრძანებით. ამ ინსტრუქციაში ჩვენ ვიყენებთ SLG46826- ს, როგორც ჩვენს GreenPAK– ს MTP– ით.

ჩვენ გთავაზობთ Arduino Uno– ს კოდის ნიმუშს ღია კოდის პლატფორმის გამოყენებით, C/C ++-ზე დაყრდნობით. დიზაინერებმა უნდა გამოიყენონ არდუინოს კოდში გამოყენებული ტექნიკა მათი კონკრეტული პლატფორმისთვის.

I2C სიგნალის სპეციფიკაციების, I2C მისამართების და მეხსიერების სივრცის შესახებ კონკრეტული ინფორმაციის მისაღებად გთხოვთ მიმართოთ GreenPAK სისტემის პროგრამირების გზამკვლევს, რომელიც მოცემულია SLG46826 პროდუქტის გვერდზე. ეს ინსტრუქცია უზრუნველყოფს ამ პროგრამირების სახელმძღვანელოს მარტივ განხორციელებას.

ქვემოთ ჩვენ აღვწერეთ საჭირო ნაბიჯები იმის გასაგებად, თუ როგორ არის დაპროგრამებული GreenPAK ჩიპი. თუმცა, თუ თქვენ უბრალოდ გსურთ მიიღოთ პროგრამირების შედეგი, გადმოწერეთ GreenPAK პროგრამული უზრუნველყოფა, რომ ნახოთ უკვე დასრულებული GreenPAK დიზაინის ფაილი. შეაერთეთ GreenPAK განვითარების ნაკრები თქვენს კომპიუტერში და დააჭირეთ პროგრამას, რათა შექმნათ პერსონალური IC.

ნაბიჯი 1: Arduino-GreenPAK კავშირი

Arduino-GreenPAK კავშირები
Arduino-GreenPAK კავშირები
Arduino-GreenPAK კავშირები
Arduino-GreenPAK კავშირები

ჩვენი SLG46826 GreenPAK– ის NVM ჩვენი Arduino ესკიზის დასაპროგრამებლად, ჩვენ პირველ რიგში დაგვჭირდება Arduino Uno– ს ოთხი ქინძისთავის დაკავშირება ჩვენს GreenPAK– თან. თქვენ შეგიძლიათ დააკავშიროთ ეს ქინძისთავები უშუალოდ GreenPAK სოკეტის ადაპტერს, ან გარღვევის დაფას GreenPAK– ით, რომელიც შედუღებულია.

გთხოვთ გაითვალისწინოთ, რომ გარე I2C გამწევი რეზისტორები არ არის ნაჩვენები ფიგურაში 1. გთხოვთ დააკავშიროთ 4.7 kΩ ამწევი რეზისტორი SCL და SDA– დან Arduino– ს 3.3 V გამომავალთან.

ნაბიჯი 2: GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან

GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან
GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან
GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან
GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან
GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან
GreenPAK NVM მონაცემების ექსპორტი GreenPAK დიზაინის ფაილიდან

ჩვენ შევაჯამებთ ძალიან მარტივ GreenPAK დიზაინს იმის საილუსტრაციოდ, თუ როგორ ხდება NVM მონაცემების ექსპორტი. ქვემოთ მოყვანილი დიზაინი არის მარტივი დონის შემცვლელი, სადაც ლურჯი ქინძისთავები მარცხნივ მიბმულია VDD (3.3v), ხოლო ყვითელი ქინძისთავები მარჯვნივ VDD2 (1.8v).

ამ დიზაინიდან ინფორმაციის ექსპორტირებისთვის თქვენ უნდა აირჩიოთ ფაილი → ექსპორტი → ექსპორტი NVM, როგორც ეს ნაჩვენებია სურათ 3 -ში.

შემდეგ თქვენ უნდა აირჩიოთ Intel HEX ფაილები (*. Hex) ფაილის ტიპად და შეინახოთ ფაილი.

ახლა თქვენ უნდა გახსნათ. Hex ფაილი ტექსტური რედაქტორით (როგორიცაა Notepad ++). Intel– ის HEX ფაილის ფორმატისა და სინტაქსის შესახებ მეტი ინფორმაციის მისაღებად გადახედეთ მის ვიკიპედიის გვერდს. ამ აპლიკაციისთვის ჩვენ გვაინტერესებს მხოლოდ ფაილის მონაცემი, როგორც ეს ნაჩვენებია 5 -ში.

მონიშნეთ და დააკოპირეთ 256 ბაიტი NVM კონფიგურაციის მონაცემები, რომლებიც მდებარეობს HEX ფაილში. თითოეული სტრიქონი, რომელსაც ჩვენ ვაკოპირებთ, არის 32 სიმბოლო, რაც შეესაბამება 16 ბაიტს.

ჩასვით ინფორმაცია Arduino სკეტჩის ხაზგასმულ nvmString განყოფილებაში, როგორც ნაჩვენებია ფიგურაში 6. თუ თქვენ იყენებთ არა Arduino მიკროკონტროლერს, შეგიძლიათ დაწეროთ ფუნქცია GreenPAK. GP6 ფაილში შენახული nvmData. (თუ თქვენ გახსნით GreenPAK ფაილს ტექსტური რედაქტორით, ნახავთ, რომ ჩვენ ვინახავთ პროექტის ინფორმაციას ადვილად მისაწვდომ XML ფორმატში.)

თქვენი GreenPAK დიზაინის EEPROM მონაცემების დასაყენებლად, აირჩიეთ EEPROM ბლოკი კომპონენტების პანელიდან, გახსენით მისი თვისებების პანელი და დააჭირეთ "მონაცემების დაყენებას".

ახლა თქვენ შეგიძლიათ შეცვალოთ თითოეული ბაიტი EEPROM– ში ინდივიდუალურად ჩვენი GUI ინტერფეისით.

თქვენი EEPROM მონაცემების დაყენების შემდეგ შეგიძლიათ მისი ექსპორტი HEX ფაილში იმავე მეთოდის გამოყენებით, რომელიც ადრე აღწერილი იყო NVM მონაცემების ექსპორტისთვის. ჩადეთ EEPROM მონაცემების ეს 256 ბაიტი არდუინოს ესკიზის eepromString განყოფილებაში.

თითოეული პერსონალური დიზაინისთვის მნიშვნელოვანია შეამოწმოთ დაცვის პარამეტრები პროექტის პარამეტრების "უსაფრთხოება" ჩანართში. ეს ჩანართი აყალიბებს დაცვის ბიტებს მატრიქსის კონფიგურაციის რეგისტრებისთვის, NVM და EEPROM. გარკვეული კონფიგურაციების მიხედვით, NVM თანმიმდევრობის ატვირთვას შეუძლია ჩაკეტოს SLG46824/6 მის ამჟამინდელ კონფიგურაციაში და ამოიღოს ჩიპის MTP ფუნქციონირება.

ნაბიჯი 3: გამოიყენეთ Arduino Sketch

გამოიყენეთ Arduino Sketch
გამოიყენეთ Arduino Sketch

ატვირთეთ ესკიზი თქვენს არდუინოში და გახსენით სერიული მონიტორი 115200 ბუდის სიჩქარით. ახლა თქვენ შეგიძლიათ გამოიყენოთ ესკიზის MENU მოთხოვნა რამდენიმე ბრძანების შესასრულებლად:

● წაკითხვა - კითხულობს ან მოწყობილობის NVM მონაცემებს, ან EEPROM მონაცემებს მითითებული მონა მისამართის გამოყენებით

● წაშლა - წაშლის ან მოწყობილობის NVM მონაცემებს ან EEPROM მონაცემებს მითითებული მონა მისამართის გამოყენებით

● ჩაწერა - წაშლის და შემდეგ წერს ან მოწყობილობის NVM მონაცემებს ან EEPROM მონაცემებს მითითებული მონა მისამართის გამოყენებით. ეს ბრძანება წერს მონაცემებს, რომლებიც ინახება nvmString ან eepromString მასივებში.

● Ping - აბრუნებს მოწყობილობის მონა მისამართების ჩამონათვალს, რომლებიც დაკავშირებულია I2C ავტობუსთან

ამ ბრძანებების შედეგები იბეჭდება სერიული მონიტორის კონსოლზე.

ნაბიჯი 4: პროგრამირების რჩევები და საუკეთესო პრაქტიკა

SLG46824/6– ის მხარდაჭერის განმავლობაში ჩვენ დავამტკიცეთ პროგრამირების რამოდენიმე რჩევა, რათა თავიდან ავიცილოთ საერთო პრობლემები, რომლებიც დაკავშირებულია NVM მისამართების სივრცეში წაშლასთან და წერასთან. შემდეგი ქვეპუნქტები უფრო დეტალურად ასახავს ამ თემას.

1. ზუსტი 16 ბაიტიანი NVM გვერდის წერა:

SLG46824/6– ის NVM– ზე მონაცემების ჩაწერისას სამი ტექნიკაა თავიდან აცილებული:

● გვერდი წერს 16 ბაიტზე ნაკლები

● გვერდი წერს 16 ბაიტზე მეტს

● გვერდი წერს, რომ არ დაიწყება გვერდზე პირველი რეგისტრაციისას (IE: 0x10, 0x20 და ა.შ.)

თუ რომელიმე ზემოაღნიშნული ტექნიკა გამოიყენება, MTP ინტერფეისი იგნორირებას უკეთებს I2C წერას, რათა თავიდან იქნას აცილებული NVM არასწორი ინფორმაცია. ჩვენ გირჩევთ ჩაწეროთ NVM მისამართების სივრცის I2C წაკითხვა წერის შემდეგ მონაცემთა სწორი გადაცემის შესამოწმებლად.

2. NVM მონაცემების გადატანა მატრიცის კონფიგურაციის რეგისტრებში

როდესაც NVM იწერება, მატრიცის კონფიგურაციის რეგისტრები ავტომატურად არ იტვირთება ახლად დაწერილი NVM მონაცემებით. გადაცემა უნდა განხორციელდეს ხელით PAK VDD– ის ველოსიპედით ან რბილი გადატვირთვის გენერირებით I2C– ის გამოყენებით. 0xC8 მისამართით რეგისტრის დაყენებით, მოწყობილობა ხელახლა ააქტიურებს Power-On Reset (POR) თანმიმდევრობას და გადატვირთავს რეგისტრის მონაცემებს NVM– დან რეგისტრებში.

3. I2C მისამართის გადატვირთვა NVM წაშლის შემდეგ:

როდესაც NVM წაიშლება, NVM მისამართი, რომელიც შეიცავს I2C მონა მისამართს, დაყენდება 0000 -ზე. წაშლის შემდეგ, ჩიპი შეინარჩუნებს მის ამჟამინდელ მონა მისამართს კონფიგურაციის რეგისტრებში, სანამ მოწყობილობა არ აღდგება როგორც აღწერილია ზემოთ. ჩიპის გადატვირთვის შემდეგ, I2C მონა მისამართი უნდა იყოს მითითებული 0xCA მისამართში, კონფიგურაციის რეგისტრებში ყოველ ჯერზე, როდესაც GreenPAK ელექტროენერგიის ციკლი ან გადატვირთვა ხდება. ეს უნდა გაკეთდეს მანამ, სანამ ახალი I2C მონა მისამართის გვერდი არ დაიწერება NVM– ში.

ნაბიჯი 5: Errata დისკუსია

Errata დისკუსია
Errata დისკუსია

როდესაც წერთ "გვერდის წაშლა ბაიტზე" (მისამართი: 0xE3), SLG46824/6 აწარმოებს არა I2C თავსებადი ACK- ს I2C ბრძანების "მონაცემთა" ნაწილის შემდეგ. ეს ქცევა შეიძლება განიმარტოს როგორც NACK, I2C სამაგისტრო პროგრამის განხორციელებიდან გამომდინარე.

ამ ქცევის მოსაწყობად, ჩვენ შევცვალეთ Arduino პროგრამისტი ნახატზე ნაჩვენები კოდის კომენტარებით. კოდის ეს მონაკვეთი ამოწმებს I2C ACK- ს eraseChip () ფუნქციის ყველა I2C ბრძანების ბოლოს. ეს ფუნქცია გამოიყენება NVM და EEPROM გვერდების წასაშლელად. ვინაიდან კოდის ეს მონაკვეთი მდებარეობს მარყუჟში For, "დაბრუნება -1;" ხაზი იწვევს MCU– ს ფუნქციის ნაადრევად გასვლას.

NACK- ის არსებობის მიუხედავად, NVM და EEPROM წაშლის ფუნქციები სწორად შესრულდება. ამ ქცევის დეტალური ახსნისთვის მიმართეთ „საკითხს 2: არა-I2C– თან თავსებადი ACK ქცევა NVM და EEPROM გვერდის წაშლა ბაიტისთვის“SLG46824/6 შეცდომის დოკუმენტში (გადახედვა XC) დიალოგის ვებსაიტზე.

დასკვნა

ამ ინსტრუქციებში ჩვენ აღწერს Arduino პროგრამისტის გამოყენების პროცესს GreenPAK IC– ზე პერსონალური NVM და EEPROM სტრიქონების ასატვირთად. Arduino Sketch– ის კოდი საფუძვლიანად არის კომენტარი, მაგრამ თუ თქვენ გაქვთ რაიმე შეკითხვა ესკიზთან დაკავშირებით, გთხოვთ დაუკავშირდეთ ჩვენს საველე პროგრამის ინჟინერს ან განათავსოთ თქვენი შეკითხვა ჩვენს ფორუმზე. MTP პროგრამირების რეგისტრატორებთან და პროცედურებთან დაკავშირებით უფრო სიღრმისეული ინფორმაციისათვის გთხოვთ, მიმართოთ დიალოგის სისტემის პროგრამირების გზამკვლევს.

გირჩევთ: