Mục lục:

Bus Pirate 3EEPROM Explorer Board: 5 bước
Bus Pirate 3EEPROM Explorer Board: 5 bước

Video: Bus Pirate 3EEPROM Explorer Board: 5 bước

Video: Bus Pirate 3EEPROM Explorer Board: 5 bước
Video: How Do I Crack Satellite and Cable Pay TV? (33c3) 2024, Tháng bảy
Anonim
Bảng khám phá Bus Pirate 3EEPROM
Bảng khám phá Bus Pirate 3EEPROM

Nếu bạn có một trong những Hack một ngày xe buýt Cướp biển, bạn sẽ làm gì với nó? Tìm hiểu về EEPROM 1 dây, I2C và SPI với bảng khám phá 3EEPROM (chúng tôi gọi nó là THR-EE-PROM). EEPROM là một loại chip nhớ lưu trữ dữ liệu mà không cần nguồn điện liên tục. Nó hữu ích để lưu trữ dữ liệu vĩnh viễn trong các mạch ghi nhật ký nhỏ hoặc giữ các trang tùy chỉnh trong một máy chủ web nhỏ. EEPROM có rất nhiều kích thước và giao thức. 3EEPROM có ba chip EEPROM phổ biến: DS2431 (1-Wire), 24AA- (I2C) và 25AA- (SPI). Cả ba đều đã được trình diễn trước đó trên Hack a Day, nhưng mỗi bản demo sử dụng một phiên bản khác nhau của phần cứng và phần cứng của Bus Pirate, rất khó cho người mới bắt đầu sử dụng Bus Pirate v2go. DS2431, 24AA- và 25AA- EEPROMs với Bus Pirate v2go. Chúng tôi cũng có nhật ký phiên đầy đủ dưới dạng tệp văn bản nên bạn sẽ không bỏ lỡ một chi tiết nào. PCB khoảng 10 đô la, bộ dụng cụ khoảng 15 đô la, được vận chuyển trên toàn thế giới. Chúng tôi cần tổ chức một nhóm mua 10 PCB hoặc 20 bộ dụng cụ để bắt đầu. Nếu bạn quan tâm đến Bus Pirate, phiên bản 3 sắp ra mắt.

Bước 1: Tổng quan về phần cứng 3EEPROM

Tổng quan về phần cứng 3EEPROM
Tổng quan về phần cứng 3EEPROM
Tổng quan về phần cứng 3EEPROM
Tổng quan về phần cứng 3EEPROM
Tổng quan về phần cứng 3EEPROM
Tổng quan về phần cứng 3EEPROM

Mục tiêu của nguyên mẫu này là tìm hiểu về EEPROM và ba giao thức bus phổ biến. Đầu tiên, chúng tôi xem xét PCB 3EEPROM, sau đó chúng tôi trình diễn từng EEPROM bằng công cụ giao diện nối tiếp đa năng Bus Pirate. Nếu bạn không có Bus Pirate, bạn vẫn có thể làm theo vì thứ tự cơ bản của các hoạt động giao diện vẫn giống nhau cho dù bạn triển khai chúng như thế nào. Chúng tôi đã tạo mạch và PCB bằng phiên bản phần mềm miễn phí của Cadsoft Eagle. Bạn có thể tải xuống giản đồ và PCB từ kho lưu trữ Bus Pirate SVN. PCB 3EEPROM chứa DS2431 1-Wire EEPROM (IC1), 24AA- I2C EEPROM (IC4) và 25AA- SPI EEPROM (IC5). DS2431 (IC1) lấy điện một cách ký sinh từ bus 1-Wire, nó không có chân cấp nguồn bên ngoài và không yêu cầu tụ điện tách. IC2 và IC3 là các điểm trống cho các thiết bị 1 dây bổ sung, như một DS2431 khác hoặc cảm biến nhiệt độ DS1822. C1 (0,01uF) là tùy chọn và chỉ cần thiết nếu IC2 hoặc IC3 được sử dụng với thiết bị 1 dây được cấp nguồn. 1 dây yêu cầu điện trở kéo lên mạnh, tối đa là 2,2K ohms. Điện trở kéo lên trên tàu của Bus Pirate là 10K, quá yếu để cấp nguồn đúng cách cho DS2431 trong khi ghi. Bo mạch thám hiểm 3EEPROM bao gồm điện trở kéo lên 1,8k ohm, 1/8 watt (R1) trên bus 1-Wire để không cần thêm điện trở kéo lên. 24AA- (IC4) và 25AA- (IC5) mỗi tụ điện nhận được một tụ điện 0,1uF để tách chúng khỏi nguồn điện (C2, C3). Bạn có thể không cần các tụ điện trong một mạch đơn giản như vậy, chúng tôi đã loại bỏ chúng khỏi bảng nguyên mẫu trong phần trình diễn. Bus I2C được sử dụng bởi 24AA- cũng yêu cầu điện trở kéo lên, nhưng điện trở kéo lên 10K ohm của Bus Pirate trên bo mạch là đủ. Tất cả các thành phần sẽ hoạt động từ 2,8volt đến 5volt DC. Mạch được cấp nguồn thông qua các chân VCC và GND của jumper 3. Có hai chân VCC, một chân dùng để cấp nguồn, chân kia dùng cho chân đầu vào điện trở kéo lên của Bus Pirate (Vpullup). PCBChúng tôi đã tạo mạch và PCB bằng cách sử dụng phiên bản phần mềm miễn phí của Cadsoft Eagle. Bạn có thể tải xuống sơ đồ và PCB từ kho lưu trữ Bus Pirate SVN. Nếu bạn muốn một bộ PCB hoặc 3EEPROM được chuẩn bị chuyên nghiệp, chúng tôi có thể sắp xếp mua theo nhóm nếu 10 hoặc 20 người quan tâm. Danh sách bộ phận Điện trở R1 1800 ohm (1/8 watt) C2, tụ điện 3 0,1uF / 10volts + JP1-4 0,1 tiêu đề chân namIC1 DS2431 1K 1-dây EEPROM TO-92IC4 ** 24AA014-I / P I2C EEPROM DIP8IC5 ** 25AA010A-I / P SPI EEPROM DIP8ICS4, 5 8 chân cắm DIP cho IC5, 6 ** IC4, IC5 có thể có kích thước bất kỳ, chúng tôi liên kết với các chip nhỏ, chúng tôi sử dụng 128byte và 128Kbyte. Không thể bao gồm một số bảng định dạng và HTML trong mục Có thể hướng dẫn, bạn có thể xem bài đăng gốc tại blog Nguyên mẫu nguy hiểm.

Bước 2: 25AA- / 25LC- SPI EEPROM

25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM

Tất cả các bản trình diễn EEPROM trông khá giống nhau. Chúng tôi sẽ ghi một vài con số vào chip, và sau đó đọc chúng. Mỗi thiết bị có các điều kiện áp dụng khi bạn muốn ghi nhiều hơn một vài giá trị, chẳng hạn như kích thước trang và giới hạn ranh giới. Đọc thêm về những điều này trong biểu dữ liệu cho thiết bị cụ thể của bạn. Điện trở kéo lên là vấn đề phổ biến nhất, hãy kiểm tra điện áp chân cắm kéo lên bằng menu 'v' trong thiết bị đầu cuối Bus Pirate. Tàu: 25AA, SPI EEPROM (1Kbyte). Bus: SPI. Điện trở kéo lên chỉ yêu cầu đối với giao diện điện áp hỗn hợp. Yêu cầu công suất: 1,8 vôn đến 5,5 vôn (AA), 2,5 vôn đến 5,5 vôn (LC).. Tôi không thể bao gồm một số bảng định dạng và HTML trong Có thể hướng dẫn, bạn có thể xem bản gốc tại blog Nguyên mẫu nguy hiểm. IC5 là một I2C EEPROM 25AA- series từ Microchip, những EEPROM này có rất nhiều kích thước. Các bộ phận AA chạy từ 1,8 vôn đến 5,5 vôn, trong khi bộ phận 25LC- có yêu cầu tối thiểu 2,5 vôn. 3 (0,1uF) tách SPI EEPROM khỏi nguồn điện. Các chân chống ghi (WP) và giữ có thể được điều khiển bởi một bộ vi điều khiển, nhưng chúng tôi đã vô hiệu hóa chúng bằng cách giữ các chân này ở mức cao. Các chân bus SPI, CS, DO, CLK và DI, được đưa đến tiêu đề JP4. Thiết lập Nếu bạn đang sử dụng Bus Pirate, hãy kết nối nó với 3EEPROM hoặc 25AA- IC như thể hiện trong hình ảnh biểu đồ bên dưới. SPI thường không yêu cầu điện trở kéo lên. Giao diện Trong nhà ga Bus Pirate, nhấn 'm' để xem menu chế độ và chọn SPI. Định cấu hình thư viện SPI cho đầu ra chân bình thường, sử dụng giá trị mặc định cho tất cả các cài đặt chế độ SPI khác. Bật nguồn cung cấp ('W' lớn) tại lời nhắc chế độ SPI. Cuối cùng, nhận báo cáo điện áp để đảm bảo nguồn điện đang hoạt động ('v'). Chúng tôi sẽ trình bày cách giao tiếp EEPROM trực tiếp ở mức 3,3volt bằng cách sử dụng thư viện SPI ở chế độ pin bình thường. Điện trở kéo lên không cần thiết cho bản trình diễn này. Nếu bạn muốn giao tiếp một EEPROM được cấp nguồn bằng 5volt, hãy sử dụng thư viện SPI ở chế độ chân thu mở (HiZ) và bật các điện trở kéo lên có chân Vpullup (Vpu) được kết nối với nguồn điện của EEPROM. Bước 1, tắt ghi bảo vệ 'SPI> [0b110] CS ENABLED <<< kích hoạt chọn chipWRITE: 0x06 <<< vô hiệu hóa lệnh bảo vệ ghi CS DISABLED <<25AA- được bảo vệ ghi khi bật nguồn. Chọn chip thấp hơn (CS) ([), gửi lệnh tắt bảo vệ ghi (0x06), sau đó nâng CS (]) để cho phép ghi vào EEPROM. Lệnh tắt bảo vệ ghi là 0b00000110 ở dạng nhị phân, nhưng chúng ta có thể rút gọn nó thành 0b110 và Bus Pirate vẫn hiểu. Bước 2, viết một số giá trị 'SPI> [0b10 0 3 2 1] CS ENABLED <<< chip chọn đã kích hoạtWRITE: 0x02 <<< viết lệnhWRITE: 0x00 <<< ghi địa chỉ bắt đầuWRITE: 0x03 <<< 3 giá trị cần ghi (3, 2, 1) VIẾT: 0x02WRITE: 0x01CS BỊ TẮT <<Bây giờ EEPROM có thể ghi được. Đầu tiên, hạ CS để kích hoạt 25AA- ([). Tiếp theo, gửi lệnh ghi (0x02) và vị trí bắt đầu ghi (0). Gửi dữ liệu để lưu trữ (3 2 1), sau đó nâng CS (]) để lưu các giá trị. Lưu ý: chúng tôi đã sử dụng một EEPROM 128byte nhỏ, các chip lớn hơn sẽ sử dụng địa chỉ 16bit (2 byte). Lệnh này sẽ là [0b10 0 '' '' 0 '' '3 2 1] cho các EEPROM lớn hơn 256byte, lưu ý lệnh thứ hai là 0. Kiểm tra biểu dữ liệu cho EEPROM của bạn để chắc chắn. Bước 3, đọc lại các giá trị SPI> [0b11 0 r: 3] CS ENABLED <<< chip chọn đã kích hoạtWRITE: 0x03 <<< đọc lệnhWRITE: 0x00 <<< đọc địa chỉ bắt đầuBULK ĐỌC 0x03 BYTES: <<< đọc 3 giá trị0x03 0x02 0x01CS ĐÃ TẮT <<Cuối cùng, đọc lại dữ liệu để xác minh rằng ghi thành công. Chọn 25AA- ([), gửi lệnh đọc (0x03) và địa chỉ bắt đầu (0), sau đó đọc ba giá trị (r: 3). Nâng cao CS để hoàn thành giao dịch (]). Các giá trị khớp, ghi thành công. Lưu ý: chúng tôi đã sử dụng một EEPROM 128byte nhỏ, các chip lớn hơn sẽ sử dụng địa chỉ 16bit (2 byte). Lệnh này sẽ là [0b11 0 '' '0' '' r: 3] đối với các EEPROM lớn hơn 256byte, lưu ý lệnh thứ hai là 0. Hãy kiểm tra biểu dữ liệu cho EEPROM của bạn để chắc chắn.

Bước 3: 24AA- / 24LC I2C EEPROM

24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM

Chip: 24AA, I2C EEPROM (1Kbyte). Bus: I2C, yêu cầu điện trở kéo lên Yêu cầu công suất: 1.8volt đến 5.5volt (24AA), 2.5volt đến 5.5volt (24LC). Tham khảo: biểu dữ liệu, Trình diễn Hack a Day. Hoàn thành nhật ký phiên Bus Pirate cho phần trình diễn này. Tôi không thể bao gồm một số bảng định dạng và HTML trong Có thể hướng dẫn, bạn có thể xem bản gốc tại blog Nguyên mẫu nguy hiểm. IC4 là một I2C EEPROM 24AA- series từ Microchip, những EEPROM này có trong một tấn kích thước. Các bộ phận AA hoạt động từ 1,8 vôn đến 5,5 vôn, trong khi bộ phận 24LC- có yêu cầu tối thiểu 2,5 vôn. Một tụ điện 0,1uF (C2) tách IC4 khỏi nguồn điện. Chân chống ghi (WP) có thể được điều khiển từ bộ vi điều khiển, nhưng đối với phần trình diễn đơn giản này, chúng tôi vô hiệu hóa nó bằng kết nối với mặt đất. Các chân bus I2C, SDA và SCL, được đưa ra tiêu đề JP2. Địa chỉ của hầu hết các EEPROM 24AA là 1010AAAS, với bốn bit cuối cùng được xác định bởi các chân địa chỉ (A0, A1, A2) và bit chọn chế độ đọc / ghi (NS). Tất cả các bit địa chỉ được nối đất trong ví dụ này, vì vậy địa chỉ ghi của EEPROM là 10100000 (biểu dữ liệu trang 6). Thiết lập Nếu bạn đang sử dụng Bus Pirate, hãy kết nối nó với 3EEPROM hoặc 24AA- IC như thể hiện trong hình ảnh biểu đồ bên dưới. I2C là một bus hai chiều yêu cầu điện trở kéo lên trên cả hai chân. Bạn có thể sử dụng các điện trở kéo lên trên tàu của Bus Pirate bằng cách kết nối chân Vpullup (Vpu) với nguồn điện 3.3volt và kích hoạt chúng trong thiết bị đầu cuối. Giao diện Lưu ý: Không phải tất cả các I2C EEPROM đều hoạt động giống nhau. Ví dụ, 24AA01 nhỏ bé có một hệ thống địa chỉ và lệnh hoàn toàn khác. Đảm bảo kiểm tra biểu dữ liệu cho chip của bạn. Nhấn 'm' trong cổng Bus Pirate và chọn I2C từ menu chế độ. Bật nguồn cung cấp ('W' lớn) và điện trở kéo lên ('p', tùy chọn 2) tại dấu nhắc I2C. Nhận báo cáo điện áp ('v') để đảm bảo nguồn điện đang được bật và chân Vpullup được kết nối với điện áp. I2C> (0) <<(1) <<< sử dụng macro tìm kiếm địa chỉ Tìm kiếm không gian địa chỉ I2C 7bit. Tìm thiết bị tại: 0xA0 0xA1 <<Chúng tôi đã biết rằng địa chỉ I2C là 10100000, nhưng chúng tôi cũng có thể sử dụng macro tìm kiếm I2C của Bus Pirate (1) để tìm kiếm 24AA-. Macro tìm kiếm đã tìm thấy thiết bị ở địa chỉ ghi (0xA0) và đọc (0xA1) được mong đợi. Bước 1, ghi một số giá trị I2C> [0b10100000 0 0 3 2 1] ĐIỀU KIỆN BẮT ĐẦU I2C <<< Điều kiện bắt đầu I2CWRITE: 0xA0 GOT ACK: CÓ <<< 24AA- ghi địa chỉWRITE: 0x00 GOT ACK: CÓ <<< ghi byte địa chỉ 1WRITE: 0x00 GOT ACK: CÓ <<< ghi địa chỉ byte 2WRITE: 0x03 GOT ACK: CÓ <<< 3 giá trị cần ghi (3, 2, 1) WRITE: 0x02 GOT ACK: YESWRITE: 0x01 GOT ACK: CÓ ĐIỀU KIỆN DỪNG 2C < <Bắt đầu ghi với điều kiện bắt đầu I2C ([), theo sau là địa chỉ ghi 24AA (0xa0). Tiếp theo, gửi địa chỉ 16bit để ghi tại (0 0) và dữ liệu để ghi (3 2 1). Kết thúc giao dịch I2C với điều kiện dừng (]). Bước 2, định vị con trỏ đọc I2C> [0b10100000 0 0] ĐIỀU KIỆN BẮT ĐẦU I2C <<< Điều kiện bắt đầu I2CWRITE: 0xA0 GOT ACK: CÓ <<< 24AA- ghi địa chỉWRITE: 0x00 GOT ACK: CÓ <<< ghi địa chỉ byte 1WRITE: 0x00 GOT ACK: CÓ <<< ghi địa chỉ byte 2I2C ĐIỀU KIỆN DỪNG <<Cần hai thao tác để đọc từ 24AA-. Một vị trí con trỏ đọc / ghi, cái kia trả về các giá trị. Bắt đầu với điều kiện bắt đầu I2C ([) và địa chỉ ghi (0xa0). Gửi địa chỉ 16 bit để đọc (0 0), và sau đó là điều kiện dừng (]). Chúng tôi không gửi bất kỳ dữ liệu nào để ghi lần này, chúng tôi chỉ định vị con trỏ đọc / ghi trở lại phần đầu của dữ liệu mà chúng tôi đã viết ở bước 1. Bước 3, đọc một số giá trị I2C> [0b10100001 r: 3] I2C START CONDITION <<< I2C start conditionWRITE: 0xA1 GOT ACK: YES <<< 24AA- đọc địa chỉBULK READ 0x03 BYTES: <<< đọc 3 giá trị0x03 0x02 0x01I2C STOP CONDITION <<Bước 2 đặt con trỏ đọc / ghi vào đầu dữ liệu mà chúng ta muốn đọc. Bây giờ chúng ta có thể đọc dữ liệu bằng địa chỉ đọc 24AA Bắt đầu với điều kiện bắt đầu I2C ([) và địa chỉ đọc 24AA (0xa1). Đọc ba giá trị chúng ta đã viết ở bước 1 (r: 3) và kết thúc bằng điều kiện dừng (]). Nếu các giá trị khớp nhau, thì quá trình ghi của bạn đã thành công.

Bước 4: DS2431 EEPROM 1 dây

DS2431 EEPROM 1 dây
DS2431 EEPROM 1 dây
DS2431 EEPROM 1 dây
DS2431 EEPROM 1 dây
DS2431 EEPROM 1 dây
DS2431 EEPROM 1 dây

Chip: DS2431, EEPROM 1 dây (1Kbyte). Bus: 1-Wire, điện trở kéo lên <2,2Kohm. Đối với phần trình diễn này, tôi không thể bao gồm một số bảng định dạng và HTML trong một Bản có thể hướng dẫn, bạn có thể xem bản gốc tại blog Nguyên mẫu nguy hiểm. DS2431 lấy điện từ điện trở kéo lên và không cần nguồn cung cấp bên ngoài hoặc tụ điện tách. 1-Dây cần có điện trở kéo lên mạnh, tối đa là 2,2Kohms. Điện trở kéo lên trên tàu của Bus Pirate là 10K, quá yếu để cấp nguồn đúng cách cho DS2431 trong khi ghi. Bạn phải sử dụng điện trở ngoài 2,2Kohm hoặc nhỏ hơn giữa nguồn và chân bus 1 dây. Nếu bạn gặp khó khăn trong việc ghi dữ liệu, hãy đảm bảo rằng điện trở kéo lên của bạn đủ lớn. Bảng thám hiểm 3EEPROM bao gồm một điện trở kéo lên 1800 ohm (R1) trên bus 1-Wire nên không cần điện trở bên ngoài. Thiết lập Nếu bạn đang sử dụng Bus Pirate, hãy kết nối nó với bo mạch 3EEPROM hoặc DS2431 như thể hiện trong hình ảnh biểu đồ bên dưới. DS2431 không yêu cầu chân cấp nguồn, nó được sử dụng trên bảng 3EEPROM để cấp nguồn cho điện trở kéo lên lớn cho bus 1-Wire. Giao diện Nhấn 'm' trong thiết bị đầu cuối Bus Pirate và chọn chế độ 1-Wire. Bật nguồn điện trên bo mạch ('W' lớn) và kiểm tra màn hình điện áp (v). Bước 1, tìm địa chỉ thiết bị 1-WIRE> (0xf0) <<< Macro tìm kiếm 1 dây 1WIRE ROM COMMAND: TÌM KIẾM (0xF0) Tìm thấy thiết bị tại: Macro 1WIRE address1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<< DS2431 ID duy nhất * DS2431 1K EEPROM <<Mỗi thiết bị 1-Wire có một ID 8 byte duy nhất. 1-Wire có quy trình tìm kiếm phát hiện ID của tất cả các thiết bị được đính kèm. Bus Pirate thực hiện tìm kiếm 1-Wire dưới dạng macro (240). Nhập '(240)' vào cổng Bus Pirate để bắt đầu tìm kiếm 1-Wire. Mỗi địa chỉ thiết bị được in ra, các thiết bị đã biết sẽ được xác định. Mười địa chỉ thiết bị 1-Wire đầu tiên được lưu trữ dưới dạng macro, trong ví dụ này, địa chỉ DS2431 của chúng tôi có sẵn bằng cách nhập '(1)' vào thiết bị đầu cuối. Bước 2, ghi 8 byte vào bảng đầu 1-WIRE> (0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 11WIRE BUS RESET OK <<< also {command 1WIRE WRITE ROM COMMAND: MATCH (0x55) * theo sau với địa chỉ 64bit 1 ĐỊA CHỈ DÂY MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B 'WRITE: 0x0F <<< DS2431 viết lệnh cào đệm WRITE: 0x00 <<< DS2431 ghi địa chỉ byte 1 WRITE: 0x00 <<< DS2431 ghi địa chỉ byte 2WRITE: 0x08 <<Tiếp theo, chúng tôi sẽ ghi 8 byte vào một vị trí tạm thời trong DS2431 được gọi là bảng đầu. Bắt đầu giao dịch với thiết lập lại bus 1-Wire và lệnh MATCH (0x55). Cả hai đều có sẵn dưới dạng macro '(0x55)'. Điều này cũng có thể được thực hiện mà không cần macro bằng cách nhập '{0x55', {gửi đặt lại 1 dây, 0x55 là lệnh MATCH 1 dây. Sau lệnh MATCH, gửi ID 8 byte của thiết bị đến địa chỉ. Chúng tôi đã sử dụng macro (1) được điền với ID DS2431 ở bước 1. Bạn cũng có thể nhập ID 8 byte theo cách thủ công. Tại thời điểm này, DS2431 lẽ ra đã nhận được địa chỉ của nó và sẵn sàng cho các lệnh. 0x0f là lệnh ghi bảng nháp, nó cho DS2431 biết mong đợi dữ liệu. Hai byte tiếp theo cho biết nơi đặt dữ liệu, chúng tôi sẽ lưu nó ở đầu (0 0). Cuối cùng, chúng tôi gửi 8 byte giá trị để lưu trữ, các số từ 8 đến 1. Bạn phải ghi đầy đủ 8 byte vào DS2431. Ngoài ra, địa chỉ ghi phải nằm trên ranh giới 8 byte. Xem biểu dữ liệu để biết tổng quan đầy đủ về các giới hạn ghi. Bước 3, xác minh bảng cào và lấy mã ủy quyền 1-WIRE> (0x55) (1) 0xaa r: 3 r: 8 r: 2 r: 21WIRE BUS RESET OK <<< địa chỉ thiết bị1WIRE WRITE ROM COMMAND: MATCH (0x55) * theo dõi với địa chỉ 64bit 0x07 0x06 0x05 0x04 0x03 0x02 0x01 ĐỌC SỐ LƯỢNG LỚN 0x02 BYTES: <<< CRC cho dữ liệu0xC8 0x86 ĐỌC SỐ LƯỢNG LỚN 0x02 BYTES: <<Xác minh rằng dữ liệu đã được nhận chính xác và nhận mã ủy quyền ghi. Bắt đầu lại bằng cách đặt lại 1 dây và macro lệnh MATCH (0x55) và macro địa chỉ thiết bị (1). Lần này, hãy gửi lệnh đọc giấy nháp DS2431 (0xAA), sau đó đọc tổng cộng 15 byte. 3 byte đầu tiên đọc (r: 3) là mã ủy quyền ghi, chúng tôi sẽ cần nó trong bước tiếp theo để sao chép vào EEPROM. 8 byte tiếp theo (r: 8) phải khớp với dữ liệu mà chúng tôi đã gửi ở bước 2. 2 byte cuối cùng (r: 2) là CRC16 cho dữ liệu. Số lần đọc sau CRC trả về tất cả 1s. Bước 4, ghi thẻ cào vào EEPROM 1-WIRE> (0x55) (1) 0x55 0x00 0x00 0x071WIRE BUS RESET OK <<< địa chỉ thiết bị1WIRE WRITE ROM COMMAND: MATCH (0x55) * theo địa chỉ 64bit 1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0x55 <<< sao chép lệnh bảng càoWRITE: 0x00 <<< mã ủy quyền 3 byte từ bước 3WRITE: 0x00WRITE: 0x071-WIRE> Chúng tôi có mọi thứ chúng tôi cần để lưu trữ dữ liệu bảng cào vĩnh viễn trong EEPROM. Địa chỉ thiết bị, sau đó gửi lệnh sao chép giấy nháp DS2431 (0x55), tiếp theo là mã ủy quyền ba byte mà chúng tôi đã truy xuất ở bước 3 (0x00 0x00 0x07). Nếu mã ủy quyền chính xác, dữ liệu sẽ được chuyển đến EEPROM. Bước 5, xác minh bảng cào ghi 1-WIRE> (0x55) (1) 0xaa r: 31WIRE BUS RESET OK <<< địa chỉ thiết bị1WIRE WRITE ROM COMMAND: MATCH (0x55) * theo địa chỉ 64bit 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xAA <<< đọc lệnh bàn phím xướcDS2431 đặt bit cao nhất của mã ủy quyền ghi sau khi lệnh sao chép thành công pad cào. Gửi một lệnh đọc cào khác (0xAA) để nhận mã ủy quyền cập nhật, nhưng chỉ đọc ba byte đầu tiên (r: 3). Giá trị 0x07 trước đó đã chuyển thành 0x87, lệnh sao chép đã được nhận thành công. Bước 6, đọc lại các giá trị 1-WIRE> (0x55) (1) 0xf0 0x00 0x00 r: 8 r: 81WIRE BUS RESET OK <<< địa chỉ thiết bị1WIRE WRITE ROM COMMAND: MATCH (0x55) * theo địa chỉ 64bit 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xF0 <<< Lệnh đọc DS2431WRITE: 0x00 <<< Địa chỉ đọc 2 byte WRITE: 0x00BULK ĐỌC 0x08 BYTES: <<< đọc 8 byte chúng tôi đã viết 0x08 BYTES: <<Xác minh ghi hoạt động bình thường bằng cách truy xuất các giá trị. Định địa chỉ cho DS2431, sau đó gửi lệnh đọc (0xf0) và địa chỉ để đọc từ (0x00 0x00). Có thể đọc toàn bộ phạm vi bộ nhớ bằng một lệnh duy nhất. Chúng tôi đọc tám byte mà chúng tôi đã viết trước đó (r: 8), nó trả về các giá trị mong đợi. Tám byte ngoài các giá trị này không được ghi và trả về 0.

Bước 5: Kết luận

Phần kết luận
Phần kết luận

Kết luận: Nguyên mẫu này dạy về bộ nhớ EEPROM và trình bày cách sử dụng Bus Pirate với ba giao thức phổ biến: 1-Wire, I2C và SPI. Bảng thám hiểm 3EEPROM đảm bảo các kết nối thích hợp với mỗi EEPROM và cung cấp một điện trở kéo bên ngoài cho bus 1-Wire đòi hỏi khắt khe hơn với các thành phần cấp nguồn ký sinh. PCB khoảng 10 đô la, bộ dụng cụ khoảng 15 đô la, được vận chuyển trên toàn thế giới. Chúng tôi cần tổ chức một nhóm mua 10 PCB hoặc 20 bộ dụng cụ để bắt đầu.

Đề xuất: