Xin hướng dẫn lại giao thức SPI cho ARM

cenakhoa

em thích màu hồng
em có đọc tài liệu ngày 12 và biết SPI dùng dể điều khiển một lần nhiều led với số lượng ít các chân nhưng em không biết config SPI trong ARM ra sao cả, mong mọi người hướng dẫn em dùm;):D
 

Manhdd

Cố Vấn CLB
Staff member
Mình cũng có xem qua user manual và sample code của SPI, nhưng quả thực không hiểu hết. Đã truyền SPI vào ghi dịch nhưng không thấy tín hiệu xuất ra.
Mong ai thực hiện thành công xin chỉ giáo nhé!
 

*Fabie*

Trứng gà
Mình mắc 1 con 74595 thì xuất tín hiệu đúng, chơi thêm 1 con nối tiếp (xuất 2 bytes) thì chỉ đúng con đầu....
Đang tính tới chuyện bỏ cuộc, về quê cắm câu, thật là... gian nan bắt đầu nản!
 

2death

Cố Vấn CLB
Staff member
Mình mắc 1 con 74595 thì xuất tín hiệu đúng, chơi thêm 1 con nối tiếp (xuất 2 bytes) thì chỉ đúng con đầu....
Đang tính tới chuyện bỏ cuộc, về quê cắm câu, thật là... gian nan bắt đầu nản!
Gửi sơ đồ mạch của bạn xem thử :)
Àh, gửi luôn đoạn code dùng để xuất SPI.

Xuất tín hiệu đúng 1 em đã là hay lắm rồi (ke ke)
 

Manhdd

Cố Vấn CLB
Staff member
Qua tham khảo driver ssp trong mớ driver mà anh Hải chép ở buổi tranning đầu, mình đã test SPI thành công.
file sspi.c đính kèm đã lược gần hết so với file gốc những phần không cần thiết cho việc truyền spi qua 74hc595.

Bộ spi dùng là SPI1. Kết nối với 74hc595 qua 3 chân:
- 2.1: CLK
- 2.3: MOSI // Master out Slave in
- 2.0: chân GPIO tạo clock cho chân latch clock của 74hc595.
 

Attachments

supergoodfriends

Trứng gà
Qua tham khảo driver ssp trong mớ driver mà anh Hải chép ở buổi tranning đầu, mình đã test SPI thành công.
file sspi.c đính kèm đã lược gần hết so với file gốc những phần không cần thiết cho việc truyền spi qua 74hc595.

Bộ spi dùng là SPI1. Kết nối với 74hc595 qua 3 chân:
- 2.1: CLK
- 2.3: MOSI // Master out Slave in
- 2.0: chân GPIO tạo clock cho chân latch clock của 74hc595.
xin bạn giải thích rõ cho mình hơn về hàm SSP_Send( ).thank
 

Manhdd

Cố Vấn CLB
Staff member
Hàm extern void SSP_Send(uint8_t *Buf, uint32_t Length ) :
- Buf là pointer trỏ đến byte dữ liệu 8bit đầu tiên cần truyền.
- Length là số byte được truyền tính từ byte đầu tiên.

Trong khai báo mảng: uint8_t a[6]; : Mảng a[6] có 6 phần tử là a[0], a[1], a[2], a[3], a[4], a[5]. a chính là pointer trỏ đến phần tử a[0] (hay *(a+0) ).
Vậy để truyền 3 byte: a[0], a[1], a[2], ta viết: SSP_Send(a, 3).
Ok chứ!
 

supergoodfriends

Trứng gà
Hàm extern void SSP_Send(uint8_t *Buf, uint32_t Length ) :
- Buf là pointer trỏ đến byte dữ liệu 8bit đầu tiên cần truyền.
- Length là số byte được truyền tính từ byte đầu tiên.

Trong khai báo mảng: uint8_t a[6]; : Mảng a[6] có 6 phần tử là a[0], a[1], a[2], a[3], a[4], a[5]. a chính là pointer trỏ đến phần tử a[0] (hay *(a+0) ).
Vậy để truyền 3 byte: a[0], a[1], a[2], ta viết: SSP_Send(a, 3).
Ok chứ!
ok.thank so much
 
Top