Khiếp, nghe nói con 89s8252 tới 50k lận. Thôi dùng con S52 cũng được
Thông báo
Collapse
No announcement yet.
SPI, chuẩn giao tiếp 3 dây!
Collapse
X
-
- Chuẩn I2C do Philips khởi sướng.
- Chuẩn SPI do Motorola khởi sướng.
Trong chuẩn I2C việc chọn địa chỉ đã có trong bản tin gửi đi,trong SPI phải dùng thêm các dây chọn địa chỉ (Chip select) nên phải tốn thêm các chân VDK hơn (đặc biệt quan trong nếu mạng có nhiều slave). Tôi dùng thử thấy SPI nhanh hơn I2C. Một ví dụ SPI là việc nạp chương trình cho các chip AT89S và AVR, nó dùng protocol 3 hoặc 4 byte trong mỗi bản tin trao đổi cho nhau khá đơn giản.
- Trong mạng VDK chọn chuẩn I2C có vẻ ưu việt hơn.0912666017
Comment
-
Nếu muốn dùng tốt hai chuần này cùng lúc thì bạn nên viết hai chương trình nhúng cho cả hai chuần thì tốt nhất vì bạn dùng luôn cho cả hai chuẩn và đặc biệt là bạn hiểu về cấu trúc truyền data của nó nữa .
Con 89S8252 trong Nhật Tảo ( HCM ) bán 65K lận . Nhưng tôi khuyên bạn nên dùng con 89c51 cộng với con 24c64 thì rẻ hơn rất nhiều !Mạch nạp Little Programmer
MSC-51,AVR,EEPROM ... etc
Site Fukusei shop :
Comment
-
Chào các bác, tôi có một số ví dụ về chuẩn I2C và SPI:
- về chuẩn I2C có ví dụ về giao tiếp C51 với EEPROM 24C04, các bác dowload file ck24c.pdf.
- về chuẩn SPI có ví dụ về giao tiếp C51 với EEPROM 25C64, các bác dowload file ck25c.pdf.
Các ví dụ này có source code (Keil/C)+ sơ đồ mạch điện.
Tại link:
http://www.diendandientu.com/diendan...d?thread=102220912666017
Comment
-
Mình có một số thắc mắc:
1. SPI không truyền được xa ... vậy nó có thể giao tiếp tối đa là bao xa?
2. Truyền đồng bộ dữ liệu trong SPI là dịch chuyển và hoán đổi các bít dữ liệu trong hai thanh ghi của master và slaver, vậy nếu ta copy một dữ liệu từ thẻ SD vào máy tính thông qua đầu đọc thẻ của laptop( không phải là đầu đọc chuyển đổi cắm cổng USB) thì họat động nó sẽ như thế nào?
3. Trong sơ đồ đấu nối master và slave tối đa chỉ có 4 chân hoặc 3 chân nếu không dùng đến Chip select (slaver select), vậy việc cung cấp nguồn cho quá trình vận hành thông qua đâu?
4. Phần CPOL, CPHA mình đọc mà chưa hiểu lắm, CPOL có khi là mức 1 có khi là mức 0, cái này có phải là do không có quy chuẩn chung nên có hãng để CPOL ở mức 1 và có hãng lại để ở mức 0?
Mình mới tìm hiểu nên còn hạn chế lắm, mong các anh/chị thông cảm nếu câu hỏi có vấn đề ...
Comment
-
Các anh ơi, em mới học chuyên ngành nên chưa biết lắm. Kỳ này thầy giáo bảo em làm bài luận về các chuẩn giao tiếp trong máy tính. Các anh có thể chỉ cho em phần sườn phải cần làm và hướng đi được không? Nếu có tài liệu gì thì cho em xin một ít nhé.
Em cám ơn trước!
Comment
-
CHUẨN GIAO TIẾP SPI : từ MOTOROLA
CHUẨN I2C: DO PHILIP
Là chuẩn truyền 8 bit sử dụng 4 dây ( giao tiếp 1 – 1 là 3 dây)
- SDO : đường truyền data ra
- SDI : đường nhận data
- SCK : đường đồng bộ xung CK
- SS : Slave Select: chọn giao tiếp với Slave nào
Làm việc với SPI liên quan đến 4 thanh ghi:
- SSPSTAT: thanh ghi trạng thái
- SSPCON: thanh ghi điều khiển
- SSP BUF: thanh ghi đệm
- SSPSR : thanh ghi dịch (shift)
Khi giao tiếp với nhiều Slave, Slave nào được chọn thì chân SS tương ứng ở mức thấp
Thanh ghi dịch được nối với chân của vi điều khiển để nhận các bit dữ liệu. sau khi nhận đủ 8 bit thì dữ liệu được đưa vào thanh ghi SBUF, nhờ có bộ đệm này mà cho phép vi điều khiển nhận dữ liệu tiếp theo trong khi dữ liệu ở bộ đệm có thể chưa được xử lý
/* In this example, PIC microcontroller (master) sends data byte to peripheral chip
(slave) via SPI. Program uses SPI library functions SPI1_init() and SPI1_Write. */
sbit Chip_Select at RC0_bit; // Peripheral chip_select pin is connected to RC0
sbit Chip_Select_Direction at TRISC0_bit; // TRISC0 bit defines RC0 pin to be input or output
unsigned int value; // Data to be sent (value) is of unsigned int type
void main() {
ANSEL = ANSELH = 0; // All I/O pins are digital
TRISB0_bit = TRISB1_bit = 1; // Configure RB0, RB1 pins as inputs
Chip_Select = 0; // Select peripheral chip
Chip_Select_Direction = 0; // Configure the CS# pin as an output
SPI1_Init(); // Initialize SPI module
SPI1_Write(value); // Send value to peripheral chip
Mô tả ví dụ trên như sau:
- Sbit là một kiểu dữ liệu cho phép truy cập các thanh ghi, thanh ghi SFR, biến…vv
Các thanh ghi liên quan
1. SSPSTAT
Bit SMP:
Ở chế độ SPI: bit xác định thời điểm đọc dữ liệu
1: đọc vào cuối thời điểm dữ liệu
0 : đọc vào thời điểm giữa
Chú ý: khi hoạt động ở chế độ Slave, bit này phải được xóa
Ở chế độ I2C:
1: hoạt động 100KHz
0 : 400Khz
Bit CKE: bit lựa chọn thời điểm truyền nhận data
Nó còn liên quan đến bit CKP
Nếu CKP = 1
CKE = 0: cạnh xuống
CKE = 1: cạnh lên
Nếu CKP =0 : ngược lại
Bit D/ A : chỉ sử dụng trong chế độ I2C
= 1: tức byte cuối cùng nhận được hay truyền đi là dữ liệu
= 0 : tức byte cuối cùng nhận hay truyền là địa chỉ
P : bit stop, chỉ sử dụng trong I2C
= 1:
= 0:
S : bit start:, chỉ sử dụng cho I2C
= 1: bit start được phát hiện cuối cùng
= 0 : không được phát hiện cuối cùng
Bit R/W : là bit read hay write. Chỉ sử dụng cho I2C,
Trong chế độ Slave:
= 1 : đọc dữ liệu
= 0: ghi dữ liệu
Chế độ Master:
= 1: tiến hành truyền data
= 0: không truyền data
Bit UA : chỉ sử dụng trong chế độ I2C chế độ 10bit
Bit BF : buffer Full Status bit: bit báo trạng thái bộ đệm đã đầy chưa
Trong quá trình nhận dữ liệu ( cả SPI và I2C)
= 1: đầy
= 0: chưa nhận, bộ đệm trống
Trong quá trình truyền data: ( chỉ I2C)
= 1: dữ liệu trong quá trình truyền ( không bao gồm bit ACK và bit STOP)
= 0 : truyền xong data ( không bao gồm bit ACK và bit STOP)
2. Thanh ghi SSPCON : thanh ghi điều khiển, biểu diễn như sau:
Bit WCON:
= 1: phát hiện xung đột , cố thực hiện ghi vào SBUF trong SPI còn trong I2C thì là điều kiện không phù hợp để truyền
= 0: không xung đột
SSPOV: bit báo nhận đầy
= 1: một byte mới được nhận trước khi đọc byte dữ liệu trước đó. Vì không có bộ nhớ cho data mới nhận được nên một trong 2 byte sẽ bị xóa . trong trường hợp này, dữ liệu lưu trong thanh ghi SSPSR ( dịch ) bị mất
= 0: nhận được đúng data, không có lỗi
SSPEN: xác định chức năng chân vi điều khiển và khởi tạo module MCCP.
Trong chế độ SPI:
= 1: cho phép module MCCP cấu hình 4 chân SDI, SDO, SCK, và SS
= 0: không cho phép
Trong chế độ I2C:
= 1 : cho phép module MCCP và cấu hình 2 chân SDA và SCL
=0 : không cho phép
CKP: không sử dụng trong chế độ master I2C
Trong chế độ SPI:
= 1:
= 0:
Trong chế độ Slave I2C:
= 1: cho phép clock
= 0: giữ clock ở mức thấp, sử dụng để kéo dài thời gian làm tăng sự ổn định
4 bit còn lại: SSPM3: SSPM0 – xác định chế độ sử dụng: I2C hay SPI, tần số bao nhiêu
Tóm lại, để thực hiện giao tiếp SPI, cần làm những việc sau trước khi khởi tạo SPI:
- Chế độ master: cho TRISC.3 = 0 ( cấu hình ngõ ra cung cấp xung clock)
- Chế độ Slave: TRISC.3 = 1: ngõ vào nhận xung clock
- Chú ý thiết lập chế độ cho bit MSP của thanh ghi SSPSTAT
- Xung CK tác động cạnh lên hay cạnh xuống ( bit CKE của thanh ghi SSPSTAT)
- Tốc độ bauds nằm trong 4 bit của thanh ghi SSPCON ( chỉ sử dụng cho Master)
- Lựa chọn chế độ Slave: 4 bit cuối của thanh thi SSPCON ( chỉ sử dụng cho chế đọ Slave)
Module bắt đầu hoạt động bằng cách set bit SSPEN :
- Bước 1: dữ liệu chuẩn bị truyền phải được ghi vào bộ đệm. nếu hoạt động ở chế độ master, vi điều khiển sẽ tự thực hiện bước 2,3.4. nếu ở chế độ Slave, nó sẽ không thực hiện được bước 2 , 3, 4 cho đến khi phát hiện xung clock ở chân SCK
- Bước 2:
Dữ liệu được ghi vào thanh ghi dịch và dữ liệu ở bộ đệm vẫn còn, chưa bị xóa
- Bước 3: dữ liệu được dịch ra ngoài chân ra SDO, bắt đầu từ bit có giá trị lớn nhất và trong khi đó thanh ghi dịch đồng thời được ghi đầy bởi các bit từ chân vào SDI.ở chế độ master, tự nó tạo ra xung clock trong khi chế độ slave sử dụng clock từ bên ngoài thông qua chân SCK
- Bước 4: thanh ghi dịch đầy 8 bit data vừa nhận , lúc này 2 bit là BF( bit báo đầy) và bit SSPIF được set = 1, dữ liệu nhận được là 1 byte tự động di chuyển vào bộ đệm SSPBUF. Sau khi nhận xong, nó tự động tạo ra 1 ngắt nếu cho phép
- Bước 5: cuối cùng, dữ liệu nhận được đã sẵn sàng được di chuyển vào một thanh ghi nội mong muốn trong vi điều khiển để thực hiện các nhiệm vụ mong muốn khác nhau.
EM XIN BỔ DUNG MỘT YẾU TỐ QUAN TRỌNG NHƯ BÁC GÌ GÌ ĐÓ ĐÃ NÓI: SPI LÀ CHUẨN GIAOTIEEOP MÀ MASTER VÀ SLAVE TRAO ĐỔI DÂT CHO NHAU. HẾT, CÓ GÌ SAI MOING ANH EM CHỈ GIÁOBe quan. Plz contact through email:
Comment
-
EM SỬ DỤNG MikroC Pro for pic để lập trình, nó support nhiều thư viện lắm, ngon lành, bác nào muốn sử dụng thì : vie.hanguyen89@gmail.comBe quan. Plz contact through email:
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamNhận thức con người luôn thay đổi theo thời gian.
Bây giờ kiến thức nhạc lý cháu kém, cần đến trì tuệ nhân tạo bổ xung khuyết điểm. Rồi thời gian sau đó...,cháu cố gắng trau dồi nhạc lý cháu thấy cái AI đó không diễn tả hết...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:21 -
-
bởi vi van phamNgày xưa, khi tôi còn là công nhân cơ khí sửa chửa máy cày, máy úi thì vợ tôi là cô giáo cấp 3.
Đến nhà em chơi thì có các thầy giáo cấp 3 cũng đến chơi, họ đàn cho bà xã tôi hát. Tôi cũng đàn cho em hát. Lúc đó các cô gái ...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 21:48 -
-
bởi mèomướpDạ chú rủ cô ấy đi ăn uống, cà phê, xem phim...nhớ nắm tay, rồi thì ôm hôn,...trong vòng 1 tuần mà ko nắm tay được, 1 tháng mà ko ôm đc thì dẹp ngay và luôn ạ. Nhắn tin, gọi điện ít thôi ạ, trả lời quá lâu hoặc ko trả lời cũng dẹp ngay ạ. Nên thể hiện chú là người có điều kiện nữa ạ...
-
Channel: Tâm tình dân kỹ thuật
08-02-2026, 18:50 -
-
bởi songchodep76Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...-
Channel: Hướng dẫn sử dụng diễn đàn
07-02-2026, 09:46 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -

Comment