Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Trình điều khiển hạt nhân max6875¶
Chip được hỗ trợ:
Tối đa MAX6874, MAX6875
Tiền tố: ‘max6875’
Địa chỉ được quét: Không có (xem bên dưới)
Bảng dữ liệu: ZZ0000ZZ
Tác giả: Ben Gardner <bgardner@wabtec.com>
Sự miêu tả¶
Maxim MAX6875 là bộ giám sát/trình tự sắp xếp nguồn điện có thể lập trình EEPROM. Nó cung cấp các đầu ra theo thời gian có thể được sử dụng như một cơ quan giám sát nếu được nối dây đúng cách. Nó cũng cung cấp 512 byte của người dùng EEPROM.
Khi thiết lập lại, MAX6875 đọc cấu hình EEPROM vào cấu hình của nó sổ đăng ký. Con chip sau đó bắt đầu hoạt động theo các giá trị trong sổ đăng ký.
Maxim MAX6874 là một thiết bị tương tự, hầu hết đều tương thích, có nhiều đầu vào hơn và kết quả đầu ra:
Xem bảng dữ liệu để biết thêm thông tin.
Mục nhập hệ thống¶
eeprom - 512 byte không gian EEPROM do người dùng xác định.
Nhận xét chung¶
Địa chỉ hợp lệ cho MAX6875 là 0x50 và 0x52.
Địa chỉ hợp lệ cho MAX6874 là 0x50, 0x52, 0x54 và 0x56.
Trình điều khiển không thăm dò bất kỳ địa chỉ nào, do đó bạn khởi tạo rõ ràng địa chỉ thiết bị.
Ví dụ:
$ modprobe max6875
$ echo max6875 0x50 > /sys/bus/i2c/devices/i2c-0/new_device
MAX6874/MAX6875 bỏ qua bit địa chỉ 0, do đó trình điều khiển này gắn vào nhiều địa chỉ. Ví dụ: đối với địa chỉ 0x50, nó cũng dự trữ 0x51. Phiên bản địa chỉ chẵn được gọi là ‘max6875’, phiên bản lẻ là ‘giả’.
Lập trình chip bằng i2c-dev¶
Sử dụng giao diện i2c-dev để truy cập và lập trình chip.
Việc đọc và ghi được thực hiện khác nhau tùy thuộc vào dải địa chỉ.
Các thanh ghi cấu hình có địa chỉ 0x00 - 0x45.
Sử dụng i2c_smbus_write_byte_data() để viết một thanh ghi và
i2c_smbus_read_byte_data() để đọc sổ đăng ký.
Lệnh là số đăng ký.
Ví dụ:
Để viết số 1 để đăng ký 0x45:
i2c_smbus_write_byte_data(fd, 0x45, 1);
Để đọc đăng ký 0x45:
giá trị = i2c_smbus_read_byte_data(fd, 0x45);
Cấu hình EEPROM có địa chỉ 0x8000 - 0x8045.
Người dùng EEPROM có địa chỉ 0x8100 - 0x82ff.
Sử dụng i2c_smbus_write_word_data() để ghi một byte vào EEPROM.
Lệnh là byte trên của địa chỉ: 0x80, 0x81 hoặc 0x82. Từ dữ liệu là phần dưới của địa chỉ hoặc có dữ liệu << 8:
- cmd = địa chỉ >> 8;
val = (địa chỉ & 0xff) | (dữ liệu << 8);
Ví dụ:
Để viết 0x5a vào địa chỉ 0x8003:
i2c_smbus_write_word_data(fd, 0x80, 0x5a03);
Việc đọc dữ liệu từ EEPROM phức tạp hơn một chút.
Sử dụng i2c_smbus_write_byte_data() để đặt địa chỉ đọc và sau đó
i2c_smbus_read_byte() hoặc i2c_smbus_read_i2c_block_data() để đọc dữ liệu.
Ví dụ:
Để đọc dữ liệu bắt đầu ở offset 0x8100, trước tiên hãy đặt địa chỉ
i2c_smbus_write_byte_data(fd, 0x81, 0x00);
Và sau đó đọc dữ liệu:
giá trị = i2c_smbus_read_byte(fd);
hoặc:
đếm = i2c_smbus_read_i2c_block_data(fd, 0x84, 16, bộ đệm);
Khối đọc nên đọc 16 byte.
0x84 là lệnh đọc khối.
Xem bảng dữ liệu để biết thêm chi tiết.