PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 19-10-2006, 04:30 AM   #4
FFGmember
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 4
:
Project 1: Kết nối PIC 16F877A với EEPROM 25AA640.

Sorry mọi người là tối hôm nay em tìm mỏi cả mắt mà không thấy bất cử một thằng EEPROM nào có chuẩn giao tiếp SPI, cho nên ở Project này em chỉ xin được làm chay thôi, ai có điều kiện mạch thật hoặc có trình giả lập tốt thì xin test + đưa ra ý kiến cho em phát.

SPI là một chuẩn dữ liệu giao tiếp đơn giản nhất có tốc độ lớn nhất, tuy nhiên có độ an toàn không cao khi mà dây clock bị ảnh hưởng => dẫn đến ảnh hưởng đến toàn hệ thống.
Với PIC16F877A thì có 3 chân cho chế độ SPI đó là: RC3( clock ), RC4 ( SDI ), RC5 ( SD0) , còn chân select chíp thì lấy bất cứ một chân I/O thông thường.

Cơ chế SPI là quá trình dịch bít qua lại giữa Slave và Master qua 2 đường đây SDI, SDO. Ứng với mỗi IC khác nhau lại cho một chuẩn truyền tiếp riêng để điều khiển quá trình truyền. Với EEPROM 25AA640 cơ chế đó là:

Đọc byte:
Truyền lệnh 0000011 tiếp đến là truyền địa chỉ 16 byte, và đọc dữ liệu . Khi chân CS lên 1 => cũng là lúc báo hiệu kết thúc đường truyền.






Write byte
Viết lệnh command: 00000010, sau đó truyền địa chỉ 16 bit, rồi bắt đầu truyền dữ liệu. Quá trình truyền kết thức khi CS = 1





PHP Code:
void main()
{
// init ban dau
   
OUTPUT_LOW(PIN_C2);       
   
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);
   
OUTPUT_HIGH(PIN_C2); 
   
delay(5);   
   
// truyen du lieu co gia tri 0x55 xuong eeprom tai dia chi 0x0004    
   
OUTPUT_LOW(PIN_C2);      
   
spi_write(0x02);        // command = 0x02 -> ghi du lieu
   
spi_write(0x00);
   
spi_write(0x04);
   
wpi_write(0x55);
   
OUTPUT_HIGH(PIN_C2); 
   
delay(5);
   
// Doc du leu
   
OUTPUT_LOW(PIN_C2);      
   
spi_write(0x03);       // command -= 0x03 -> doc du lieu
   
spi_write(0x00);
   
spi_write(0x04);
   
wpi_read(buff);
   
OUTPUT_HIGH(PORTD); 
   
delay(5);   
   
   while(
1);


Code trên hoàn toàn chỉ là ý tưởng như thế, ai có điều kiện hoặc đã làm rồi xin cho đôi lời.
Lâu lâu ko đựoc làm đến pic , nay còn được làm trên CCS nữa thấy thật thoải mái.

See Ua!
__________________
Răng ơi nhe ra nào …..

thay đổi nội dung bởi: FFGmember, 19-10-2006 lúc 04:34 AM.
FFGmember vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 92 19-02-2017 11:15 PM
dsPIC Tutorial 2-Các kỹ thuật cơ bản namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 33 17-10-2013 11:09 PM
dsPIC Tutorial 4-Module UART và I2C namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 76 09-05-2012 10:55 AM
Tutorial LCD cua Nigel??????? spirit Cơ bản về vi điều khiển và PIC 16 16-03-2009 05:32 PM
tutorial hay cho newbie FUD84 Cơ bản về vi điều khiển và PIC 2 04-12-2005 02:29 AM


Múi giờ GMT. Hiện tại là 01:20 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam