Giao tiếp SPI

0
551

SPI (tiếng Anh: Serial Peripheral Interface, SPI bus — Giao diện Ngoại vi Nối tiếp, bus SPI) là một chuẩn truyền thông nối tiếp đồng bộ để truyền dữ liệu ở chế độ song công toàn phần (full-duplex), do công ty Motorola thiết kế nhằm đảm bảo sự liên hợp giữa các vi điều khiển và thiết bị ngoại vi một cách đơn giản và giá rẻ. Đôi khi SPI còn được gọi là giao diện bốn dây (four wire).

Khác với cổng nối tiếp chuẩn (standard serial port), SPI là giao diện đồng bộ, trong đó bất cứ quá trình truyền nào cũng được đồng bộ hóa với tín hiệu xung clock, tín hiệu này sinh ra bởi thiết bị master (thiết bị chủ động). Thiết bị ngoại vi bên phía nhận (bị động) làm đồng bộ quá trình nhận chuỗi bit với tín hiệu xung clock. Có thể kết nối một số vi mạch vào mỗi giao diện ngoại vi nối tiếp của vi mạch-thiết bị master. Thiết bị master chọn thiết bị động để truyền dữ liệu bằng cách kích hoạt tín hiệu “chọn chip” (chip select) trên vi mạch bị động. Thiết bị ngoại vi nếu không được chọn bởi bộ vi xử lý sẽ không tham gia vào quá trình truyền theo giao diện SPI.

Trong giao diện SPI có sử dụng bốn tín hiệu số:

+MOSI(Master Out Slave In) hay SI – cổng ra của bên master, cổng vào của bên bị động, dành cho việc truyền dữ liệu từ thiết bị master đến thiết bị slave.

+MISO (Master In Slave Out) hay SO — cổng vào của bên master, cổng ra của bên bị động, dành cho việc truyền dữ liệu từ thiết bị slave đến thiết bị master.

+SCLK (Serial Clock) hay SCK — tín hiệu xung clock nối tiếp, dành cho việc truyền tín hiệu dành cho thiết bị slave.

+CS hay SS(Chip Select, Slave Select): chọn vi mạch, chọn thiết bị slave.

Nội dung Project:

Sử dụng SPI ghi giá trị DAC vào IC MCP4922

Giới thiệu IC DAC MCP4922

MCP4922 là IC DAC 12bit gồm 2 kênh A và B. Giao tiếp theo chuẩn SPI, một số thông số của MCP4922:

Product Category: Digital to Analog Converters – DAC

Resolution: 12 bit

Number of Channels: 2 Channel

Interface Type: Serial, 3-Wire, SPI

Supply Voltage – Max: 5.5 V

Supply Voltage – Min: 2.7 V

Minimum Operating Temperature: – 40 C

Maximum Operating Temperature: + 125 C

Mounting Style: SMD/SMT

Package / Case: SOIC-14

Number of Converters: 2 Converter

Architecture: Resistor-String

Operating Supply Voltage: 3 V, 5 V

Sơ đồ Timming của MCP4922

Ý nghĩa các bit:

Cấu hình trên STM32CubeMX

Bước 1: Mở STM32CubeMX và tạo dự án mới

Bước 2: Gõ tên tìm kiếm loại MCU cần lập trình và click đúp vào tên của nó

Bước 3: Cấu hình chế độ Debug cho chip là Serial Wire

Bước 4: Trong tab Clock Configuration, cấu hình tần số hoạt động cho chip là 216Mhz (max)

Bước 5: Cấu hình sử dụng SPI

Trong cây thư mục ngoại vi Connectivity chọn SPI1, ở mục Mode chọn chế độ là Full-Duplex Master, các thông số cài đặt như hình dưới.

Bước 6:Cấu hình chân PA4 hoạt động ở chế độ Output, chân này sẽ được nối với chân CS của MCP4922

Bước 7: Trong tab Project Manager, đặt tên cho Project, chọn đường dẫn lưu thư mục, chọn trình biên dịch là Keilc (MDK-ARM) và chọn phiên bản sử dụng

Bước 8: Trong mục Code Generator tích chọn Generate peripheral initialization.. Sau đó tiến hành GENERATE CODE.

Chúng ta xây dựng hàm mcp4922_write để ghi dữ liệu vào mcp4922, tham số của hàm là giá trị nằm trong khoảng từ 0-4095, tương ứng với phạm vi 12bit của DAC MCP4922.

Dữ liệu cần ghi cho MCP4922 gồm 2 byte, nên chúng ta sẽ khai báo 1 mảng gồm 2 phần tử (mảng data[2]) để lưu các byte này.

Như hình trên, các byte được truyền từ byte thấp đến byte cao, byte thấp là 8bit thấp của giá trị DAC cần xuất ra, giá trị DAC bao gồm 12bit và phạm vi từ 0-4095. 4 bit thấp của byte cao là giá trị các bit từ bit6 đến bit 9. Các bit của byte cao từ bit 4 đến bit 7 là các bit cấu hình MCP4922.

Hàm HAL_SPI_Transmit(&hspi1, data, 2, 1000); thực hiện truyền dữ liệu qua cổng SPI1, dữ liệu truyền đi là mảng data, số byte truyền đi là 2 byte và chỉ số 100 là thời gian timeout.

Trong hàm main, chúng ta sẽ thực hiện ghi giá trị trong khoảng giá trị cho phép từ 0-4095 và MCP4922, cứ 50ms giá trị DAC xuất ra sẽ tăng lên cho đến giá trị max là 4095 và trở về 0.

Chúc các bạn thành công!

Biên dịch: Mai Văn Ba

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận