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
-
bởi hayarNăm 2026 việc chọn laptop gaming chủ yếu vẫn là cân bằng vì giá cả và phần cứng thay đổi liên tục, nên tập trung vào GPU ổn, tản nhiệt tốt và hiệu năng thực tế sẽ quan trọng hơn việc chạy theo cấu hình cao nhất, giống như trong nulls brawl, chơi hay hơn khi biết cách tối ưu và chọn chiến...
-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 21:23 -
-
bởi theidiotcatDưới đây là một số gợi ý để các bạn sinh viên chọn được chiếc laptop phù hợp với nhu cầu, ngân sách và ngành học trong bối cảnh giá linh kiện leo thang kéo theo mức giá laptop liên tục tăng cao.
Bước vào mùa tựu trường năm...-
Channel: Đánh giá sản phẩm DTVN
30-06-2026, 11:26 -
-
bởi theidiotcatAMD Ryzen 9 9950X bước sang năm 2026 vẫn là một trong những bộ vi xử lý desktop mạnh mẽ nhất dành cho người dùng phổ thông cao cấp. Dù đã ra mắt từ thế hệ Zen 5 đầu tiên của dòng Ryzen 9000, con chip 16 nhân 32 luồng này vẫn giữ được sức...
-
Channel: Đánh giá sản phẩm DTVN
29-06-2026, 13:58 -
-
bởi theidiotcatTrong thị trường CPU năm 2026, khi các dòng vi xử lý đời mới liên tục ra mắt với những thông số kỹ thuật hào nhoáng, AMD Ryzen 5 7600X vẫn là một cái tên khiến nhiều game thủ và người dùng phổ thông phải cân nhắc kỹ lưỡng. Sau gần hai...
-
Channel: Đánh giá sản phẩm DTVN
29-06-2026, 13:42 -
-
bởi theidiotcatTrong bối cảnh giá linh kiện tăng cao, hiện tại mức giá laptop đã tăng đáng kể so với thời điểm trước cơn sốt AI. Chính vì vậy để lựa chọn được một chiếc laptop đáp ứng tốt nhu cầu vừa học vừa giải trí các bạn sinh viên cần...
-
Channel: Đánh giá sản phẩm DTVN
29-06-2026, 13:33 -
-
bởi theidiotcatViệc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:29 -
-
bởi theidiotcatVới mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Trong phân...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:25 -
-
bởi theidiotcatDưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Thị...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:07 -
-
bởi theidiotcatViệc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:23 -

...
Comment