[Help] Sử dụng SPI để giao tiếp với C1101

Duc Nguyen

Trứng gà
Tình hình là hôm nọ mình lỡ mua nhầm cái con CC1101 mà giao tiếp bằng SPI.
Mình cũng đã tìm hiểu, và viết được code nhưng có vẻ nó không đúng lắm.

1. Thiết lập :
-------Chân Vcc -------Nguồn 3.3V
-------Chân SO -------- Chân PA4 ( SSI0Rx)
-------Chân SI ------- Chân PA5 ( SSI0Tx)
-------Chân CSn ------- Chân PA3 ( SSI0Fss)
-------Chân SCK -------Chân PA2 ( SSI0Clk)
-------Chân GND ------- Chân GND
Vấn đề 1: Tại sao có tận 2 chân VCC? Còn 2 chân GD2 và GD0 dùng để làm gì? Mình có đọc trong data sheet nhưng chưa hiểu lắm

2. Code:
Đây là chương trình mình viết để thiết lập cho CC1101, thông số lấy từ SmartRF Studio:
https://pastebin.com/vDYs8pST
Có cc1101_register_map.h là chứa tên thanh ghi và địa chỉ, như trong data sheet của con IC.
Vấn đề 2: Hình như là nó sai một cái gì đó, nhất là ở khoản UART, vì nó không xuất data theo format mà mình muốn, cụ thể nó xuất như thế này:
https://imgur.com/a/WVi9d

Trong khi đó, như ở trên, là chương trình mặc định của TIVA, nó vẫn xuất ra ổn, vậy là có vấn đề gì đó ở phần UART
Vấn đề 3: Vậy chương trình viết trên đó, có thể nạp được cấu hình cho CC1101 không? Và nếu đã nạp thành công thì làm sao để có thể kiểm tra?

Cảm ơn mọi người trước.
 

gochit

Cố Vấn CLB
Chào bạn,
Với vấn đề đầu tiên, GD2 và GD0 là 2 chân chức năng, tùy vào bạn thiết lập thế nào thì nó hoạt động theo như thế ấy. Thường thì sẽ dùng 1 trong 2 chân đó để báo hiệu gói tin đã nhận được.

Với vấn đề thứ 2, và 3, bạn có thể tham khảo nhiều code đọc CC1101 trên mạng. Việc đọc/ghi cho CC1101 có 2 dạng, là đọc/ghi vô FIFO và đọc/ghi 1 lệnh (trong datasheet gọi đó là 1 strobe). Bạn nên xem kĩ lại datasheet phần này để biết cụ thể. Để xác nhận được là bạn có thể giao tiếp với con CC1101 không, bạn có thể đọc 2 thanh ghi VERSION và PARTNUM. Nếu bạn đọc nó ra được giá trị đúng như trong datasheet thì bạn đã giao tiếp với nó thành công.
 

Duc Nguyen

Trứng gà
Cảm ơn bạn,

Nhưng còn phần UART, mình thấy mình đã làm giống trong Workshop rồi, nhưng có vẻ như nó không hiển thị được. Nếu nó không hiển thị được thì làm sao mình biết mình gửi gì và nhận được gì?
 

gochit

Cố Vấn CLB
Chào bạn, bạn xem kĩ lại phần code UART của bạn nhé, có thể là sai chỗ nào đó trong code hoặc trong phần cứng, để cho chắc thì bạn nên thử bằng cách gửi một chuỗi cố định lên máy tính và xem thử nó có nhận đúng không trước khi kiểm tra tiếp.
 
Top