1: Rx vùng đệm khâc rỗng

Một phần của tài liệu Báo cáo bài tập lớn lập trình nhúng cơ bản tìm hiểu giao diện SPI (Trang 30)

Tiếp đó ta có module SPI đê được khởi tạo trong câc code vă đó cũng lă một phương phâp tiếp cận của câc thanh ghi cấu hình. Bđy giờ ta chỉ việc cấu hình module được sử dụng với bộ điều khiển ethernet ENC28J60.

Trong ENC28J60 thông số kỹ thuật được đề cập rằng nó có một giao diện SPI với tốc độ clock lín tới 20MHz vì thế với khởi tạo giâ trị SPI_18MHz có thể cung cấp hiệu suất tối đa.

Tham số thứ hai của phương thức begin() lă bitOder. Nó có thể lấy một trong hai giâ trị sau:

LSBFIRST : little-endian

MSBFIRST : big-endian

Hai giâ trị năy được xâc định trong “wirish.h” như sau:

Từ sơ đồ trong datasheet ENC28J60 ta có thể nhìn thấy dữ liệu phải được gửi ra từ MSB trước để lựa chọn đđy lă MSBFIRST.

Tham số thứ 3 của phương thức begin() lă Mode. Điều năy được định nghĩa trong “spi.h”:

Câc chip chỉ hỗ trợ chế độ 0,0 nín câc thông số của phương thức begin() chỉ có thể ở SPI_MODE_0

Tiếp sau lă dòng khởi động cho module SPI:

CSS lă viết tắt của “Chip Slave Select” vă trín ENC28J60 được dùng để định tuyến chđn số 7 của kết nối UEXT của câc module điều khiển ethernet mă sau đó được chuyển đến chđn kỹ thuật số D4 trín bảng Leaf lă STM32 chđn #57

Sử dụng cùng một phương phâp, ta có thể dẫn đường cho tất cả câc chđn SPI:

CSS -> D4 ---> Pin 57 = PB5 - I2C1_SMBAI

SCK -> D13 ---> Pin 21 = PA5 - SPI1_SCK / ADC12_IN5

MISO -> D12 ---> Pin 22 = PA6 - SPI1_MISO / ADC12_IN6 / TIM3_CH1 MOSI -> D11 ---> Pin 23 = PA7 - SPI1_MOSI / ADC12_IN7 / TIM3_CH2

Vấn đề ở đđy lă thư viện Maple SPI yíu cầu (vă sử dung) pin D10 giống như chip chọn. Chúng ta có thể kiểm tra điều năy bằng câch đọc câc giâ trị sử dụng câc phương phâp như thế năy "nssPin ()" :

Vì Olimex năy đê đặt một jumper trín bảng phât triển để chuyển tín hiệu đến D10 nhưng ta cũng có thể thiết lập pin bằng câch chuyển nó từ vị trí mặc định của D4:

Để kiểm tra xem câc chđn đê được thiết lập một câch chính xâc bằng câch khởi tạo của cổng SPI ta phải đọc hai thanh ghi: GPIOA_CRL (cho SCK, MISO vă MOSI) vă GPIOB_CRL (CSS).

Câc giâ trị lă:

Px7 Px6 Px5 Px4 Px3 Px2 Px1 Px0 ---- ---- ---- ---- ---- ---- ---- ----

CRLA - 1011 0100 1011 1011 0100 0100 0100 0100 ===> 0xB4BB4444 CRLB - 0100 0100 0011 1000 0100 0100 0100 0100 ===> 0x44384444

Ta cũng phải liín kết câc bit trong nhóm 4-bit để phù hợp với câc chđn 7 đến 0. Hai bit đầu tiín của nhóm thiết lập phần CNF vă hai bit cuối cùng của nhóm thiết lập MODE được thiết lập giâ trị dịch theo thiết lập sau:

SCK: PA5: 1011: chức năng thay thế Push-pull MOSI: PA7: 1011: chức năng thay thế Push-pull MISO: PA6: 0100: Input nổi / Input Pull-up

CSS: PB5: 0011: Mục đích chung đầu ra Push-pull

Một phần của tài liệu Báo cáo bài tập lớn lập trình nhúng cơ bản tìm hiểu giao diện SPI (Trang 30)

Tải bản đầy đủ (DOCX)

(35 trang)
w