đọc dữ liệu từ sd card và hiển thị lên lcd sử dụng kit de2 của altera

36 1.2K 1
đọc dữ liệu từ sd card và hiển thị lên lcd sử dụng kit de2 của altera

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SD Card Page 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ESRC Lab 618 Đề tài: Đọc dữ liệu từ SD Card hiển thị lên LCD sử dụng Kit DE2 của ALTERA Nhóm sinh viên thực hiện: Group 3- K52 Vũ Hữu Tiệp Lê Thái Hưng Nguyễn Duy Linh Lê Anh Văn Hà Nội, 1 - 2011 SD Card Page 2 SD Card Group 3 – K52 Contents 1. Giới thiệu 4 1.1. Giới thiệu thành viên 4 1.2. Tổng quan hệ thống 5 1.3. Phần việc cụ thể 5 1.4. Kết quả đạt được 5 2. Giới thiệu công nghệ sử dụng 5 2.1. Phần cứng 5 2.1.1. SD Card 5 2.1.2. Kit DE2 5 2.2. Phầm mềm 6 2.2.1. Quatus II 6 2.2.2. Nios II 6 3. Sơ đồ khối của hệ thống 9 3.1. SD Card 9 3.2. Khối xử lý Nios II 10 3.3. Khối hiển thị 10 4. SD Card 10 4.1.1. Sơ đồ chân các chế độ của SD Card 10 4.1.2. Định dạng lưu trữ trong SD Card 16 4.2. Các thanh ghi trong SD Card 22 4.2.1. OCR (operation conditions register) 23 4.2.2. CID 23 4.3. Cách gửi lệnh nhận phản hồi 24 4.3.1. CRC 24 SD Card Page 3 4.3.2. Command 25 4.3.3. Response 27 4.4. Phương pháp truyền nhận dữ liệu 30 4.4.1. Card Initialization and Card Initializatio 30 4.4.2. Data transfer Mode 31 4.4.3. Read Data 32 4.5. Đọc ghi một file dữ liệu vào trong SD card 33 4.5.1. Đọc một file 33 4.5.2. Ghi một file 33 5. LCD 16x2 34 6. Kết luận 34 7. Tài liệu tham khảo 35 8. Phụ lục A: Các hàm sử dụng trong hệ thống: 36 SD Card Page 4 1. Giới thiệu 1.1. Giới thiệu thành viên Thông tin cá nhân của các thành viên Nhóm 1 Vũ Hữu Tiệp (Nhóm trưởng) Mobile: 0975 936 743 Mail: vuhuutiep@gmail.com Công việc chính : ngắt nút bấm hiển thị LCD, cấu trúc bảng FAT. Nguyễn Duy Linh Mobile: 0979 468 289 Mail: linhnd89@gmail.com Công việc chính: Tìm hiểu cấu trúc bảng FAT. Lê Thái Hưng Mobile: 0972 186 249 Mail: hung.kstn.k52@gmail.com Công việc chính: Viết các thủ tục đọc dữ liệu trong SD Card. Lê Anh Văn Mobile: 0936 845 488 Mail: vanla3190@gmail.com Công việc chính: Tìm hiểu các chế độ, thanh ghi, thủ tục đọc thẻ SD. SD Card Page 5 1.2. Tổng quan hệ thống Đề tài lớn: Đọc dữ liệu từ SD card ( file ảnh, âm thanh) dung Kit DE2 hiển thị lên màn hình VGA. Công việc của nhóm: Giao tiếp giữa Kit DE2 va SD card. Đọc file text trong SD card hiển thị lên màn hình LCD. 1.3. Phần việc cụ thể - Tìm hiểu về cấu trúc SD card, cấu trúc bảng FAT, các thanh ghi, cách nhận gửi lệnh, phương pháp truyền nhận dữ liệu. - Xây dựng hệ thống NIOS II điều khiển, thực hiện lệnh giao tiếp với SD card. - Giao tiếp hiển thị lên màn hình LCD. 1.4. Kết quả đạt được Giao tiếp với SD card dung SD Mode, đọc file txt hiển thị lên màn hình LCD. Dùng phím bấm để tìm file chọn file cần hiển thị. 2. Giới thiệu công nghệ sử dụng 2.1. Phần cứng 2.1.1. SD Card SD card là thiết bị lưu trữ rất phổ biến hiện nay được sử dụng cho nhiều mục đích khác nhau như ảnh, film, dữ liệu…trên nhiều thiết bị khác nhau ( máy ảnh số, máy quay phim, máy nghe nhạc, điện thoại…). Trong đề tài này, chúng tôi sử dụng 1 SD Carddung lượng 2G, định dạng FAT16. 2.1.2. Kit DE2 DE2 ( Development and Education ) la một công cụ cho việc thiết kế nâng cao các thiết bị đa phương tiện, lưu trữ mạng. DE2 sử dụng công nghệ state-of- the-art trong cả phần cứng các công cụ thiết kế nhờ máy tính giúp mở rộng phạm vi ứng dụng. DE2 có nhiều tính năng phù hợp với cả việc sử dụng trong các phòng lab các hệ thống số tinh vi. Altera cung cấp các công cụ hỗ SD Card Page 6 trợ phù hợp cho DE2, gồm có các hướng dẫn, các bài lab trên DE2, các bài minh họa… 2.2. Phầm mềm 2.2.1. Quatus II Trong đề tài, chúng tôi sử dụng SOPC Builder của Quatus II để tạo ra 1 vi xử lý mềm. 2.2.2. Nios II Để hiểu Nios II là chương trình dùng để làm gì, chúng ta hãy làm một phép so sánh. Chẳng hạn, với vi điều khiển PIC, IC(phần cứng) được so sánh với công việc mà SOPC Builder tạo ra còn PICC(chương trình lập trình cho PIC) sẽ được so sánh với Nios II. Vậy, Nios II chính là chương trình lập trình cho vi xử lý mềm mà SOPC tạo ra. Hình 2.1. Tổng quan về SOPC Nios II Khi học một vi điều khiển mới, chúng ta sẽ quan tâm đến một số vấn đề: - Điều khiển vào ra - Trễ - Ngắt Bây giờ chúng ta sẽ đi vào từng vấn đề. 2.2.2.1. Điều khiển vào ra trong Nios II Trong mục này, chúng ta sẽ quan tâm đến việc đọc ghi dữ liệu vào các thanh ghi như thế nào. SD Card Page 7 - Để tìm địa chỉ của các thanh ghi, chúng ta tìm các định nghĩa của chúng trong file system.h trong thư mục /projectname_syslib[system_0]/Debug/system_desciption Ví dụ #define BUTTON_PIO_BASE 0x00681090 //Định nghĩa địa chỉ cho các nút bấm #define LED_GREEN_BASE 0x00681080 //Định nghĩa địa chỉ cho các LED GREEN #define LED_RED_BASE 0x00681070 - Tiếp theo, chúng ta quan tâm đến 2 macro đọc / ghi dữ liệu từ / vào các thanh ghi. Bảng 2.1. Macro đọc ghi dữ liệu trong Nios II Macro Cách sử dụng IORD(BASE, REGNUM) Đọc giá trị của thanh ghi tại Offset REGNUM trong 1 device có địa chỉ cơ sở là BASE. IOWR(BASE, REGNUM, DATA) Ghi giá trị DATA vào thanh ghi tại địa chỉ offset REGNUM trong 1 device có địa chỉ BASE. BUTTON, SWITCH, LEDR, LEDG có REGNUM = 0 được định nghĩa lại trong thư viện altera_avalon_pio_regs.h cho dễ sử dụng: #define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0) #define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data) 2.2.2.2. Hàm trễ Trong Nios II có 2 hàm trễ được xây dựng sẵn là msleep usleep SD Card Page 8 2.2.2.3. Xử lý ngắt trong Nios II Ngắt trong Nios II khá giống với ngắt trong PIC. Với phạm vi của đề tài, chúng tôi chỉ thực hiện ngắt nút bấm. Xét đoạn code sau: #include "altera_avalon_pio_regs.h" #include "system.h" #include <stdio.h> volatile int button = 0; void buttons_isr( void* context, alt_u32 id) { volatile int *value = (volatile int*) context; *value = IORD_ALTERA_AVALON_PIO_EDGE_CAP( BUTTON_PIO_BASE ); IOWR_ALTERA_AVALON_PIO_EDGE_CAP( BUTTON_PIO_BASE, 0 ); } void buttons_interrupt_enable() { IOWR_ALTERA_AVALON_PIO_EDGE_CAP( BUTTON_PIO_BASE, 0 ); //kiem tra //status xem ngat nao xay ra va ghi 0x0 de tai thiet lap ngat alt_irq_register( BUTTON_PIO_IRQ, (void *) &button, buttons_isr ); IOWR_ALTERA_AVALON_PIO_IRQ_MASK( BUTTON_PIO_BASE, 0x3 ); //Cho //phep ngat 2 phim cuoi } Đoạn code trên thực hiện công việc ngắt nút bấm, khi bấm 1 trong 4 nút KEY0-KEY3. - Hàm void buttons_isr( void* context, alt_u32 id) là chương trình con phục vụ ngắt. Khi có ngắt nút bấm xảy ra, nút được bấm sẽ tương ứng với giá trị trả về của value, cụ thể: Bảng 2.2. Giá trị tương ứng với các nút bấm khi khởi tạo ngắt Key is pressed Value KEY0 0x01 KEY1 0x02 KEY2 0x04 KEY3 0x08 - Hàm void buttons_interrupt_enable() là hàm khởi tạo ngắt. Ta quan tâm tới một hàm quan trọng: SD Card Page 9 alt_irq_register( BUTTON_PIO_IRQ, (void *) &button, buttons_isr ); Câu lệnh này thực hiện công việc: Khi có ngắt nút bấm, thực hiện công việc được mô tả trong chương trình con phục vụ ngắt void buttons_isr( void* context, alt_u32 id), giá trị trả về của hàm này được lưu trong biến toàn cục button. Để xác định nút bấm nào được enable ngắt, ta xét câu lệnh cuối cùng: IOWR_ALTERA_AVALON_PIO_IRQ_MASK( BUTTON_PIO_BASE, DATA ); Theo thứ tự từ KEY3 đến KEY0, để enable ngắt, ta cho bit thứ 4, 3, 2, 1 của DATA bằng 1. 3. Sơ đồ khối của hệ thống Avalon bus NIOS II Core LCD Controler SRAM Controler SD card Controler SDRAM Controler SD Card LCD Key Hình 3.1. Sơ đồ khối của hệ thống 3.1. SD Card SD Carddung lượng 2G, có chứa sẵn một vài file text. SD Card Page 10 3.2. Khối xử lý Nios II Thực hiện công việc điều khiển, giao tiếp với thẻ LCD. 3.3. Khối hiển thị LCD 1602 là LCD có sẵn trong kit DE2 4. SD Card 4.1.1. Sơ đồ chân các chế độ của SD Card 4.1.1.1. Sơ đồ chân Giao tiếp trong SD Card dựa trên giao tiếp bằng 9 chân ( Clock, Command, 4 chân Data, 3 chân nguồn) có tần số làm việc lớn nhất là 50MHz sử dụng điện áp thấp. Khối điều khiển giao tiếp SD Card cũng hỗ trợ giao tiếp với thẻ Multimedia ( thực chất khác biệt giữa SD Card Multimedia Card là quá trình khởi tạo) Hình 4.1. Sơ đồ chân thẻ SD [...]... Hiển thị các file trong SD Card Khởi tạo chương trình, kiểm tra xem có giao tiếp với SD Card hay không Thư viện Các hàm con sử dụng trong hàm này SD_ Card. h SD_ Card. h SD_ Card. h SD_ Card. h SD_ Card. h Ncc();Ncr(); send_cmd(); SD_ Card FAT16.h Ncr();Ncc();response_R();send_cmd(); FAT16.h FAT16.h void GetTime();void GetDay(); FAT16.h FAT16.h SD_ read_lba(); FAT16.h LCD. h LCD. h LCD. h LCD. h LCD. h LCD_ GoTo() ;LCD_ Show_Text();... Hiển thị thông tin của file len man hinh console fat[], BYTE Đọc dữ liệu chứa trong 1 file của SD Card, lưu thông tin về file trong mảng fat[] lưu dữ liệu của file trong mảng data[] void PrintData(fi *entry, BYTE data[]); Hiển thị dữ liệu của file len man hinh console void LCD_ Init(); Khởi tạo LCD void LCD_ Show_Text(char* Text); Hiển thị một chuỗi kí tự lên LCD void LCD_ GoTo(int x, int y); Hiển thị. .. gói dữ liệudữ liệu thông thường SD Card Page 13 o Wide width data: Hình 4.4 Định dạng gói dữ liệu – độ rộng dữ liệu  Quá trình đọc: bắt đầu khi host gửi yêu cầu đến card, card sẽ gửi trả bằng tín hiệu Response sau đó dữ liệu sẽ được card gửi (tùy vào lệnh mà dữ liệu sẽ gồm nhiều block hay chỉ 1 block) , cuối cùng host phát lệnh dừng đọc Hình 4.5 Quy trình đọc một block dữ liệu SD Card Page 14 Đọc. .. hàm sử dụng trong hệ thống: Các hàm sử dụng Chức năng void Ncr(void); Chuyển card về chế độ nhận dữ liệu Tạo mẫu 8 clock Xử lý phản hồi từ card Gửi command đến card *buff, UINT32 lba, Đọc dữ liệu của seccnt sector trên SD Card bắt đầu từ sector thứ lba lưu vảo trong buffer BYTE SD_ card_ init(void); Khởi tạo giao tiếp với SD Card void GetTime(int lsb, int msb, int *sec, Đọc thời gian khởi tạo của. .. 0x00 Đọc 1 block SD Card Page 32 - Chờ cho cho đến khi tồn tại dữ liệu trên đường Data Đọc toàn bộ 512 byte dữ liệu của block Các byte dữ liệu này được đọc khi chân clock ở mức cao Ta cần sử dụng 1 biến con trỏ để lưu 512 byte dữ liệu được đọc vào Ở đây, dùng biên *buff Kết thúc đọc dữ liệu 1 block - Sau khi đọ xong 1 block ta cần gửi 16 xung clock chờ cho tin hiệu trên dây Data kết thúc 4.5 Đọc ghi... các thông tin header của file (nếu có) lưu trong con trỏ *entry - PrintHeader in các thông tin của file đang xét lưu trong con trỏ *entry lên LCD - trên console GerData lấy dữ liệu của file sử dụng bảng fat lưu ở mảng fat[], sử dụng thông tin về file lưu trong con trỏ *entry Sau đó lưu dữ liệu này vào trong mảng data[] - PrintData in dữ liệu của file đang xét lên trên console sử dụng mảng data[] 4.5.2... thúc 4.5 Đọc ghi một file dữ liệu vào trong SD card Do thẻ SD chỉ là 1 partion nên khi đọc hay ghi ta chỉ quan tâm đến bảng FAT, Root là đủ 4.5.1 Đọc một file Quy trình việc đọc file như sau: - Tìm kiếm file header của file trong bảng Root Tìm trong bảng Fat các cluster chứa dữ liệu Đọc các cluster tìm được lấy dữ liệu Ở đây, các chương trình cần thiết cho việc đọc SD_ card được ghi trong file... thể gửi thêm các lệnh khác Song ở mức độ đọc thẻ SD ta chỉ cần đề cập đến lệnh này Tác dụng của lệnh là xác định độ dài của block truyền phù hợp với loại thẻ SD sử dụng 4.4.3 Read Data Ở đây ta chỉ xét quy trình đọc dữ liệu của 1 block 512byte Việc đọc dữ liệu của 1 file lưu trên thẻ SD tất nhiên sẽ là việc đọc nhiều liên tiếp CMD17 (kèm số thứ tự block cần đọc) Lệnh CMD17 (BLOCK_READ) – phản hồi R1... do Card gửi trả lại host sau mỗi command nhận trước đó Cấu trúc của Response thường gồm 48 hoặc 136 bits bao gồm nội dung phản hồi mã CRC( 7 hoặc 16) Tín hiệu phản hồi cũng được truyền qua đường CMD SD Card Page 11 Hình 4.2 Định dạng gói Respones  Dữ liệu (data): dữ liều được truyền hai chiểu từ card đến host ngược lại Host trong chế độ SD sử dụng 1 hoặc cả 4 đường Data để truyền dữ liệu Dữ liệu. .. Hình 4.6 Quy trình đọc nhiều block dữ liệu  Quá trình ghi: tương tự như quá trình đọc, sau khi host gửi command , nếu card gửi response chấp nhận host sẽ gửi dữ liệu Hình 4.7 Quy trình ghi một block dữ liệu Ghi nhiều block: Hình 4.8 Quy trình ghi nhiều gói dữ liệu  SPI mode: Chế độ SPI sử dụng một đường dữ liệu 1 đường tín hiệu CS nên có nhược điểm là tốc độ chậm hơn chế độ SD mode Chế độ SPI . lớn: Đọc dữ liệu từ SD card ( file ảnh, âm thanh) dung Kit DE2 và hiển thị lên màn hình VGA. Công việc của nhóm: Giao tiếp giữa Kit DE2 va SD card. Đọc file text trong SD card và hiển thị lên. SD Card Page 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ESRC Lab 618 Đề tài: Đọc dữ liệu từ SD Card và hiển thị lên LCD sử dụng Kit DE2 của ALTERA Nhóm sinh. với SD card. - Giao tiếp và hiển thị lên màn hình LCD. 1.4. Kết quả đạt được Giao tiếp với SD card dung SD Mode, đọc file txt và hiển thị lên màn hình LCD. Dùng phím bấm để tìm file và chọn

Ngày đăng: 13/04/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan