Mục lục:

Ví dụ về lập trình MTP Arduino: 5 bước
Ví dụ về lập trình MTP Arduino: 5 bước

Video: Ví dụ về lập trình MTP Arduino: 5 bước

Video: Ví dụ về lập trình MTP Arduino: 5 bước
Video: [Arduino 2] Giới thiệu phần cứng Arduino Uno R3 | Các chân chức năng cơ bản 2024, Tháng mười một
Anonim
Ví dụ về lập trình MTP Arduino
Ví dụ về lập trình MTP Arduino

Trong phần Có thể hướng dẫn này, chúng tôi hướng dẫn cách sử dụng bản phác thảo lập trình SLG46824 / 6 Arduino để lập trình một thiết bị Lập trình nhiều thời gian (MTP) Hộp thoại SLG46824 / 6 GreenPAK ™.

Hầu hết các thiết bị GreenPAK đều có thể lập trình một lần (OTP), có nghĩa là khi ngân hàng bộ nhớ không thay đổi (NVM) của chúng được ghi, nó sẽ không thể bị ghi đè. GreenPAKs với tính năng MTP, như SLG46824 và SLG46826, có một loại ngân hàng bộ nhớ NVM khác có thể được lập trình nhiều lần.

Chúng tôi đã viết một bản phác thảo Arduino cho phép người dùng lập trình MTP GreenPAK với một vài lệnh giám sát nối tiếp đơn giản. Trong Có thể hướng dẫn này, chúng tôi sử dụng SLG46826 làm GreenPAK của chúng tôi với MTP.

Chúng tôi cung cấp mã mẫu cho Arduino Uno bằng cách sử dụng nền tảng mã nguồn mở dựa trên C / C ++. Các nhà thiết kế nên ngoại suy các kỹ thuật được sử dụng trong mã Arduino cho nền tảng cụ thể của họ.

Để biết thông tin cụ thể về thông số kỹ thuật tín hiệu I2C, địa chỉ I2C và không gian bộ nhớ, vui lòng tham khảo Hướng dẫn lập trình trong hệ thống GreenPAK được cung cấp trên trang sản phẩm SLG46826. Có thể hướng dẫn này cung cấp cách triển khai đơn giản của hướng dẫn lập trình này.

Dưới đây chúng tôi mô tả các bước cần thiết để hiểu cách lập trình chip GreenPAK. Tuy nhiên, nếu bạn chỉ muốn lấy kết quả của việc lập trình, hãy tải phần mềm GreenPAK để xem File thiết kế GreenPAK đã hoàn thành. Cắm Bộ phát triển GreenPAK vào máy tính của bạn và nhấn chương trình để tạo IC tùy chỉnh.

Bước 1: Kết nối Arduino-GreenPAK

Kết nối Arduino-GreenPAK
Kết nối Arduino-GreenPAK
Kết nối Arduino-GreenPAK
Kết nối Arduino-GreenPAK

Để lập trình NVM của SLG46826 GreenPAK với bản phác thảo Arduino của chúng tôi, trước tiên chúng tôi cần kết nối bốn chân Arduino Uno với GreenPAK của chúng tôi. Bạn có thể kết nối các chân này trực tiếp với Bộ điều hợp ổ cắm GreenPAK hoặc với bảng đột phá có hàn GreenPAK.

Xin lưu ý rằng điện trở kéo lên của I2C bên ngoài không được hiển thị trong Hình 1. Vui lòng kết nối một điện trở kéo lên 4,7 kΩ từ cả SCL và SDA với đầu ra 3,3 V của Arduino.

Bước 2: Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK

Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK
Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK
Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK
Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK
Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK
Xuất dữ liệu GreenPAK NVM từ tệp thiết kế GreenPAK

Chúng tôi sẽ tập hợp một thiết kế GreenPAK rất đơn giản để minh họa cách xuất dữ liệu NVM. Thiết kế bên dưới là một bộ dịch chuyển cấp độ đơn giản, trong đó các chân màu xanh ở bên trái được gắn với VDD (3.3v), trong khi các chân màu vàng ở bên phải được gắn với VDD2 (1.8v).

Để xuất thông tin từ thiết kế này, bạn cần chọn Tệp → Xuất → Xuất NVM, như trong Hình 3.

Sau đó, bạn sẽ cần chọn Intel HEX Files (*.hex) làm loại tệp và lưu tệp.

Bây giờ, bạn sẽ cần mở tệp.hex bằng trình soạn thảo văn bản (như Notepad ++). Để tìm hiểu thêm về cú pháp và định dạng tệp HEX của Intel, hãy xem trang Wikipedia của nó. Đối với ứng dụng này, chúng tôi chỉ quan tâm đến phần dữ liệu của tệp như trong Hình 5.

Đánh dấu và sao chép 256 byte dữ liệu cấu hình NVM nằm trong tệp HEX. Mỗi dòng mà chúng tôi đang sao chép dài 32 ký tự, tương ứng với 16 byte.

Dán thông tin vào phần nvmString được đánh dấu của bản phác thảo Arduino như thể hiện trong Hình 6. Nếu bạn đang sử dụng Vi điều khiển không phải Arduino, bạn có thể viết một hàm để phân tích cú pháp nvmData được lưu trong tệp GreenPAK. GP6. (Nếu bạn mở tệp GreenPAK bằng trình soạn thảo văn bản, bạn sẽ thấy rằng chúng tôi lưu trữ thông tin dự án ở định dạng XML dễ truy cập.)

Để đặt dữ liệu EEPROM cho thiết kế GreenPAK của bạn, hãy chọn khối EEPROM từ bảng thành phần, mở bảng thuộc tính của nó và nhấp vào "Đặt dữ liệu".

Bây giờ bạn có thể chỉnh sửa từng byte trong EEPROM riêng lẻ với giao diện GUI của chúng tôi.

Sau khi dữ liệu EEPROM của bạn được thiết lập, bạn có thể xuất nó sang tệp HEX bằng cách sử dụng cùng một phương pháp được mô tả trước đây để xuất dữ liệu NVM. Chèn 256 byte dữ liệu EEPROM này vào phần eepromString của bản phác thảo Arduino.

Đối với mỗi thiết kế tùy chỉnh, điều quan trọng là phải kiểm tra cài đặt bảo vệ trong tab “Bảo mật” của cài đặt dự án. Tab này cấu hình các bit bảo vệ cho các thanh ghi cấu hình ma trận, NVM và EEPROM. Trong một số cấu hình nhất định, việc tải lên chuỗi NVM có thể khóa SLG46824 / 6 về cấu hình hiện tại và xóa chức năng MTP của chip.

Bước 3: Sử dụng Arduino Sketch

Sử dụng Phác thảo Arduino
Sử dụng Phác thảo Arduino

Tải bản phác thảo lên Arduino của bạn và mở màn hình nối tiếp với tốc độ truyền 115200. Bây giờ bạn có thể sử dụng lời nhắc MENU của bản phác thảo để thực hiện một số lệnh:

● Đọc - đọc dữ liệu NVM hoặc dữ liệu EEPROM của thiết bị bằng địa chỉ phụ được chỉ định

● Xóa - xóa dữ liệu NVM của thiết bị hoặc dữ liệu EEPROM bằng địa chỉ phụ được chỉ định

● Ghi - Xóa và sau đó ghi dữ liệu NVM của thiết bị hoặc dữ liệu EEPROM bằng địa chỉ phụ được chỉ định. Lệnh này ghi dữ liệu được lưu trong mảng nvmString hoặc eepromString.

● Ping - trả về danh sách các địa chỉ phụ của thiết bị được kết nối với bus I2C

Kết quả của các lệnh này sẽ được in ra bảng điều khiển màn hình nối tiếp.

Bước 4: Mẹo lập trình và các phương pháp hay nhất

Trong quá trình hỗ trợ SLG46824 / 6, chúng tôi đã ghi lại một số mẹo lập trình để giúp tránh các lỗi phổ biến liên quan đến việc xóa và ghi vào không gian địa chỉ NVM. Các phần phụ sau đây phác thảo chủ đề này chi tiết hơn.

1. Thực thi Trang NVM 16 Byte Chính xác Viết:

Khi ghi dữ liệu vào SLG46824 / 6’s NVM, có ba kỹ thuật cần tránh:

● Trang viết với ít hơn 16 byte

● Trang viết với hơn 16 byte

● Trang viết không bắt đầu ở thanh ghi đầu tiên trong một trang (IE: 0x10, 0x20, v.v.)

Nếu bất kỳ kỹ thuật nào ở trên được sử dụng, giao diện MTP sẽ bỏ qua việc ghi I2C để tránh tải NVM với thông tin không chính xác. Chúng tôi khuyên bạn nên thực hiện đọc I2C không gian địa chỉ NVM sau khi ghi để xác minh việc chuyển dữ liệu chính xác.

2. Truyền dữ liệu NVM vào thanh ghi cấu hình ma trận

Khi NVM được ghi, các thanh ghi cấu hình ma trận không được tự động tải lại với dữ liệu NVM mới được ghi. Quá trình chuyển phải được bắt đầu theo cách thủ công bằng cách xoay vòng PAK VDD hoặc bằng cách tạo thiết lập lại mềm bằng I2C. Bằng cách đặt thanh ghi ở địa chỉ 0xC8, thiết bị sẽ bật lại trình tự Khởi động lại nguồn (POR) và tải lại dữ liệu thanh ghi từ NVM vào thanh ghi.

3. Đặt lại địa chỉ I2C sau khi xóa NVM:

Khi NVM bị xóa, địa chỉ NVM chứa địa chỉ phụ I2C sẽ được đặt thành 0000. Sau khi xóa, chip sẽ duy trì địa chỉ phụ hiện tại của nó trong thanh ghi cấu hình cho đến khi thiết bị được đặt lại như mô tả ở trên. Khi chip đã được thiết lập lại, địa chỉ I2C slave phải được đặt ở địa chỉ 0xCA trong thanh ghi cấu hình mỗi khi GreenPAK được ngắt nguồn hoặc đặt lại. Điều này phải được thực hiện cho đến khi trang địa chỉ nô lệ I2C mới được ghi trong NVM.

Bước 5: Thảo luận Errata

Thảo luận Errata
Thảo luận Errata

Khi ghi vào “Page Erase Byte” (Địa chỉ: 0xE3), SLG46824 / 6 tạo ra ACK không tuân thủ I2C sau phần “Dữ liệu” của lệnh I2C. Hành vi này có thể được hiểu là NACK tùy thuộc vào việc triển khai I2C master.

Để phù hợp với hành vi này, chúng tôi đã sửa đổi trình lập trình Arduino bằng cách nhận xét đoạn mã được hiển thị trong Hình 11. Phần mã này kiểm tra một ACK I2C ở cuối mỗi lệnh I2C trong hàm deleteChip (). Chức năng này được sử dụng để xóa các trang NVM và EEPROM. Vì phần mã này nằm trong vòng lặp For, "return -1;" khiến MCU sớm thoát khỏi chức năng.

Bất chấp sự hiện diện của NACK, các chức năng xóa NVM và EEPROM sẽ thực thi đúng cách. Để được giải thích chi tiết về hành vi này, vui lòng tham khảo “Vấn đề 2: Hành vi ACK không tuân thủ I2C cho NVM và EEPROM Page Erase Byte” trong tài liệu SLG46824 / 6 errata (Bản sửa đổi XC) trên trang web của Dialog.

Phần kết luận

Trong Tài liệu hướng dẫn này, chúng tôi mô tả quy trình sử dụng trình lập trình Arduino được cung cấp để tải lên các chuỗi NVM và EEPROM tùy chỉnh lên IC GreenPAK. Mã trong Phác thảo Arduino được nhận xét kỹ lưỡng, nhưng nếu bạn có bất kỳ câu hỏi nào liên quan đến bản phác thảo, vui lòng liên hệ với một trong các Kỹ sư ứng dụng hiện trường của chúng tôi hoặc đăng câu hỏi của bạn trên diễn đàn của chúng tôi. Để biết thêm thông tin chuyên sâu về thủ tục và sổ đăng ký lập trình MTP, vui lòng tham khảo Hướng dẫn lập trình trong hệ thống của Dialog.

Đề xuất: