Chia sẻ chương trình đọc ghi thẻ SD bằng MSP430 G2553 phục vụ lưu trữ

Chia sẻ chương trình đọc ghi thẻ SD bằng MSP430 G2553 phục vụ lưu trữ


1. Tổng quan về chương trình
Chương trình sử dụng vi điều khiển chính là MSP430G2553 (có thể sử dụng vi điều khiển khác cùng họ MSP430) kết nối với module đọc/ghi thẻ nhớ SD card là MODULE MICRO SD CARD để lưu trữ dữ liệu, đọc dữ liệu…

Phần mềm sử dụng: IAR for MSP430

2. Tiến hành
a. Chuẩn bị

1 KIT MSP430G2553, 1 Module SD Card, 1 Thẻ nhớ SD card : Micro SD <= 2GB hoặc Micro SDHC <= 32GB

Và 1 hoặc nhiều file (nếu bạn cần ghi vào nhiều file) định dạng .txt (khác với file tự tạo) có trong thẻ nhớ SD card sẽ có sẵn trong file chia sẽ, các bạn có thể sao chép đổi tên để sử dụng đúng mục đích.

b. Nối dây

Ở đây chúng ta dùng giao tiếp SPI (các bạn có thể lên google search là sẽ rõ) giữa MSP430G2553 và Module SD card

Ở thẻ nhớ có tổng cộng 6 chân nối tương ứng với MSP như sau

- VCC nối với VCC 5V của MSP
- GND nối với GND của MSP
Các bạn lấy lược đực hàn vào 2 cái lỗ như hình dưới để cắm dây đúng nguồn 5V

CS (Chip Select) nối với chân P2.0 (có thể nối xuống chân GND của MSP).

- SCK nối với chân P1.5 của MSP.
- MISO/SOMI nối với chân P1.6 của MSP.
- MOSI/SIMO nối với chân P1.7 của MSP.

c. Chương trình:

(Trong file đính kèm cuối bài viết)

Ở đây mình giải thích một số hàm do mình tự viết, các bạn có thể điều chỉnh cho phù hợp (phần khai báo có sẵn trong file)

Hàm kết nối với SD card

void connectSD() //Connect to SD Card filename: SDcard.txt

{

pf_mount(&fs);

rc = pf_open(“SDcard.txt”);

if(rc) dieSPI(rc);

}

Hàm này để kết nối tới file có trong thẻ nhớ SD (mình lấy tên là SDcard.txt, các bạn có thể chỉnh sửa)

pf_mount(&..): để mở thẻ SD và khi chạy lần 2 để đóng thẻ SD

pf_open(“file name”): để kết nối tới file cần ghi dữ liệu.

Hàm đọc 1 dòng từ thẻ nhớ

void Read_Line(int dong, char ReadLine[30]) // Read any line from SD Card

{

br = 0;

AccStringR = (dong-1)*1024;

pf_lseek(AccStringR);

if(rc) dieSPI(rc);

pf_read(ReadLine, 30, &br);

​ uart1Print(ReadLine);

__delay_cycles(1000000);

}

Hàm này để đọc 1 dòng bất kì từ thẻ nhớ SD và ghi vô biến kiểu mảng char ReadLine[30]

pf_lseek(…), đưa con trỏ tới vị trí… để bắt đầu đọc

pf_read(ReadLine, 30, &br):

+ ReadLine : ghi ra biến ReadLine

+ 30: đọc 30 kí tự bắt đầu từ con trỏ

Hàm ghi 1 dòng vào thẻ nhớ

void WRITESD(char *string) //Write String to SDCard

{

bw = 0; /* Pointer to number of bytes written */

StringLength = 25;

AccStringW = 1024*line; //Con trỏ tới chỗ cần viết

pf_lseek(AccStringW);

if(rc) dieSPI(rc);

pf_write(string, StringLength, &bw); //Đọc vào chuỗi string

if(rc) dieSPI(rc);

pf_write(0,0,&bw); //Kết thúc ghi

if(rc) dieSPI(rc);

__delay_cycles(100000);

}

Lưu ý: Tất cả các dòng cách nhau trong 1024 (như ta nhìn trong máy tính)

3.Kết luận:

Ở trên là cách ghi một chuỗi dữ liệu vào thẻ nhớ SD Card bằng vi điều khiển MSP430G2553, các bạn có thể sử dụng vào nhiều mục đích như:

Truyền một gói tin đi xa mà bị đứt kết nối, ta có thể ghi lại và lần kết nối sau ta có thể lấy ra và truyền lại.
Ghi dữ liệu đo đạc được theo thời gian ở những nơi không có kết nối mạng


(Theo Thái Thiên - www.tapit.vn)

Bình Luận
Cùng danh mục: Vi điều khiển - Lập trình

Giải thích cơ chế các lệnh SET BIT, CLEAR BIT và TOGGLE trong lập trình vi điều khiển

15/09/2022 08:10:32 / Lượt xem: 184 / Người đăng: biendt

Giải thích các lệnh SET BIT, CLEAR BIT và TOGGLE thường được dùng trong lập trình vi điều khiển. Lệnh SET BIT là lệnh cài đặt 1 bit mong muốn trong thanh ghi cho nó có giá trị logic 1 và không làm thay đổi giá trị các bit còn lại của thanh ghi đó. Lệnh CLEAR BIT là lệnh cài đặt 1 bit mong muốn trong thanh ghi cho nó giá trị logic 0 và không làm thay đổi giá trị các bit còn lại của thanh ghi đó. Lệnh TOGGLE BIT là lệnh cài đặt 1 bit mong muốn trong thanh ghi cho nó giá trị logic 0 nếu trước đó nó có giá trị logic 1 và ngược lại, đồng thời không làm thay đổi giá trị các bit còn lại của thanh ghi đó.

Hướng dẫn thiết kế mạch vi điều khiển đơn giản

07/06/2022 06:18:47 / Lượt xem: 298 / Người đăng: biendt

Thiết kế mạch cho vi điều khiển là một việc làm không hề đơn giản đối với những người mới bắt đầu. Có thể bạn phải đọc hàng trăm trang datasheet và tài liệu thiết kế tham khảo, các sơ đồ mạch thiết kế mẫu, các chỉ dẫn layout để có thể hoàn thiện được thiết kế của mình một cách tốt nhất. Hướng dẫn này sẽ chỉ ra những điểm chung mà các bạn cần lưu ý khi thiết kế mạch vi điều khiển

Thiết kế mạch chống nhiễu cho Vi điều khiển (Chíp lập trình hoặc IC)

05/05/2022 06:05:35 / Lượt xem: 615 / Người đăng: biendt

Có mấy phương pháp cho mạch chống nhiễu vi điều khiển : .Sử dụng cách ly quang: để cách ly giữa tín hiệu điều khiển từ VĐK xuất ra và mạch công suất 220v.Sử dụng mạch snubber khi điều khiển tải bằng relay.Sử dụng linh kiện điện tử chính hãng...Sử dụng mạch lọc nguồn AC 220v trước khi cấp cho bộ nguồn 5V nuôi VĐK...Chống nhiễu khi viết code

Ứng dụng vi điều khiển AT89S52 đếm và đặt trước vòng quay từ 0-99 cho máy quấn băng keo máy biến áp xung

21/02/2018 21:32:46 / Lượt xem: 2520 / Người đăng: Nguyễn Thế Trọng Nhân

Đây là bài mô phỏng vi điều khiển AT89S52 đếm và cài đặt vòng quay cho mô tơ hiển thị trên 2 led 7 vach từ 00-99. Áp dụng cho máy quấn keo biến áp xung

Chia sẻ đèn giao thông ngã tư PIC16F877A CCS

24/09/2016 16:09:11 / Lượt xem: 8256 / Người đăng: lam3ngon

Chào các bạn trong bài đăng trước mình đã hướng dẫn các bạn về đèn giao thông ngã tư nhưng là chạy 1 cách tư động nên trong bài này hướng dẫn các bạn điều khiển bằng nút nhấn nha !