Câu lệnh đọc ghi thẻ nhớ và hàm định dạng FATFS

Một phần của tài liệu ĐỒ ÁN TN - XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU QUA GIAO DIỆN RS485 VÀ GSM (Trang 63 - 68)

1. Nội dung thiết kế tốt nghiệp:

4.3.3 Câu lệnh đọc ghi thẻ nhớ và hàm định dạng FATFS

Cấu trúc lệnh của SD Card: Một khung lệnh có độ dài 6 bytes gồm các trường sau:

Bảng 4. 1 Khung lệnh của SD Card

Vị trí bit 47 46 [45- 40] [39 – 8] [7 – 1] 0 Kíchthước 1 1 6 32 7 1 Giá trị 0 1 x x x 1 Mô tả Start bit Transmittion bit Command index

argument CRC7 End bit

Một số lệnh thường gặp khi giao tiếp với Micro SD Card

Bảng 4. 2 Một số lệnh thường gặp của SD Card

Mã lệnh Ký hiệu Mô tả

CMD0 GO_IDLE_STATE Reset thẻ về trạng thái idle

CMD1 SEND_OP_CODE Yêu cầu thẻ gửi nội dung thông tin của

Operating Condition Regiters Condition Regiters

CMD8 SEND_EXT_CSD Yêu cầu thẻ gửi thông tin các thanh ghi

CSD(Card Specific Data) dưới dạng block dữ liệu.

CMD9 SEND_CSD Yêu cầu thẻ gửi thông tin cụ thể của

Đồ Án Tốt Nghiệp

Trang 61

CMD10 SEND_CID Yêu cầu gửi các thông tin CID(Card

Information Data).

CMD12 STOP_TRANSMISSION Ngưng trao đổi dữ liệu

CMD16 SET_BLOCKLEN Thiết lập độ lớn tính theo byte của một

block dữ liệu, giá trị mặc này được lưu trong CSD

CMD17 READ_SINGLE_BLOCK Đọc một block dữ liệu

CMD18 READ_MULTIPLE_BLOCK Đọc nhiều block dữ liệu. Số lượng block

được thiết lập bởi lệnh CMD23

CMD23 SET_BLOCK_COUNT Thiết lập số lượng block dữ liệu để ghi

hoặc đọc.

CMD24 WRITE_BLOCK Ghi một block dữ liệu.

CMD25 WRITE_MULTIPLE_BLOC

K

Ghi nhiều block dữ liệu. Số lượng block được thiết lập bởi lệnh CMD23

MD55 APP_CMD Thông báo cho thẻ nhớ lệnh tiếp theo là

lệnh riêng của ứng dụng chứ không phải là lệnh chuẩn

Câu lệnh gửi tới thẻ nhớ: Khi hoạt động ở chế độ SPI, các lệnh điều khiển và dữ liệu được truyển chung trên 2 tín hiệu DI và DO

Khi đọc dữ liệu từ thẻ :

Hình 4. 12 Đọc dữ liệu từ thẻ nhớ [5]

Khi ghi dữ liệu xuống thẻ :

Hình 4. 13 Ghi dữ liệu xuống thẻ nhớ [5] Chuẩn giao tiếp SD:

Đọc thanh ghi CID trong thẻ sử dụng lệnh READ_CID. Trạng thái của thẻ:

 Card status: Được lưu trong 1 thanh ghi trạng thái 32-bit . Nó sẽ gửi như là 1 trường dữ liệu card respond tới host command. Thanh ghi status cung cấp thông tin về trạng thái hiện thời của thẻ và sự hoàn thành lệnh sau cùng cho host command. Lệnh truy vấn :

Trang 62

 Sd_status: Được lưu trong 512-bit và được gửi như là một dữ liệu single block ngay sau khi được truy vấn bởi host bằng sử dụng lệnh SD_STATUS

Thanh ghi CSD:

 Tất cả thông tin cấu hình của thẻ SD đều được lưu trên thanh ghi này.

 Những bytes MSB của thanh ghi này chứa thông tin về nhà sản xuất và 2 bytes Least Significant chứa dữ liệu về host được điều khiển, thẻ sao lưu, write protection, định dạng file người dùng.

 Host có thể đọc thông tin và thay đổi dữ liệu trên thanh ghi CSD bằng lệnh SEND_CSD và PROGRAM_CSD.

Giao tiếp thông qua SD bus cơ bản là thông qua các chuỗi bit data hay command, chúng đều bắt đầu bằng một start bit và một stop bit:

Command: Một lệnh thể hiện bắt đầu một hành động. Một lệnh được gửi từ host tới từng thẻ riêng biệt hay tới tất cả các thẻ được kết nối. Một lệnh được truyền tuần tự trên dây CMD.

Response: Một response được truyền tới host để trả lời một lệnh được nhận từ trước đó. Response này cũng được truyền trên dây CMD.

Data: Dữ liệu có thể truyền từ host tới thẻ hoặc ngược lại, dữ liệu được truyền trên dây data.

Dữ liệu truyền đi hoặc tới thẻ được đóng gói trong các block. Các data block luôn kèm theo các CRC bit. Có hai loại block dữ liệu là: single block và multi block. Chú ý rằng multi block tốt hơn cho việc ghi dữ liệu nhanh hơn. Kết thúc việc truyền một multi block khi có một stop command trên CMD. Dữ liệu truyền được thiết lập bởi host là sử dụng single hay multi.

Hành động đọc một multi block:

Hình 4. 14 Đọc một multi block [18]

Đồ Án Tốt Nghiệp

Trang 63

Hình 4. 15 Viết một multi block [18]

Định dạng một command:

Hình 4. 16 Định dạng một command [18]

Định dạng response: Có 4 kiểu response trả về tùy thuộc nội dung kèm theo độ dài có thể là 48 hoặc 136 bit. Thuật toán bảo vệ cho block data là CRC-16-CCITT

Hình 4. 17 Định dạng response [18] FATFS :

FatFS là bộ mã nguồn miễn phí hỗ trợ định dạng FAT(File Allocation Table) được sử dụng rộng rãi trong hệ điều hành Windows. Tổ chức của FATFS được mô tả như sau:

Trang 64

Hình 4. 18 Tổ chức FATFS [4]

FATFS sẽ cung cấp giao diện các hàm cơ bản để thực thi các thao tác file trên thẻ MMC/SD tương tự như lập trình file trên máy tính.

 FatFS hỗ trợ các kiểu format FAT12, FAT16, FAT32.

 Các hàm giao diện lập trình: f_mount, f_open, f_close, f_read, f_write,f_lseek, f_sync, f_opendir, f_readdir, f_getfree, f_stat, f_mkdir, f_untrnk, f_chmod, f_rename, f_mkfs.

FatFS gồm 2 phần chính là phần FAT bao gồm các hàm liên quan đến File Allocation Table, và phần ATA liên quan đến xử lý các lệnh ATA để giao tiếp với thẻ nhớ.

Tổ chức file chính của FatFs gồm:

 file ff.c: gồm các hàm hỗ trợ FAT.

 file ata.c: gồm các hàm giao tiếp ATA command.

Để giao tiếp với phần điều khiển (driver) của thẻ MMC/SD, FatFS yêu cầu 5 hàm giao diện

 disk_initialize: hàm khởi tạo kết nối tới thẻ MMC/SD, đồng thời kích hoạt cho thẻ ở trạng thái sẵn sàng hoạt động.

 disk_write: ghi dữ liệu vào một vùng sector nhất định.

 disk_read: đọc dữ liệu từ một vùng sector cho trước.

 disk_status: lấy trạng thái của thẻ.

 disk_ioctl: các hàm xử lý các yêu cầu khác sẽ được bố trí xử lý ở đây. Kiến trúc của FatFS đơn giản do đó rất tiện cho việc “port” sang một hệ nhúng khác. Người dùng không cần có kiến thức sâu về FAT vẫn có thể sử dụng FatFS vào hệ thống của mình.

Đồ Án Tốt Nghiệp

Trang 65

Chương 5: Chế tạo thử nghiệm

Một phần của tài liệu ĐỒ ÁN TN - XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU QUA GIAO DIỆN RS485 VÀ GSM (Trang 63 - 68)

Tải bản đầy đủ (PDF)

(85 trang)