You are on page 1of 37

Machine Translated by Google

UG305: Người dùng đa giao thức động


Hướng dẫn

Hướng dẫn sử dụng này cung cấp thông tin chi tiết về cách triển khai ứng
dụng bằng cách sử dụng giải pháp Đa giao thức động của Phòng thí nghiệm NHỮNG ĐIỂM CHÍNH

Silicon. Đa giao thức động cắt thời gian của radio và nhanh chóng thay
• Kiến trúc đa giao thức động

đổi cấu hình để cho phép các giao thức không dây khác nhau hoạt động đáng • Giới thiệu về Bộ lập lịch phát thanh

tin cậy cùng một lúc. • Các ví dụ về Bộ lập lịch Radio

• Tương tác với Micrium OS

• Ghi chú triển khai theo giao thức cụ thể

silabs.com | Xây dựng một thế giới kết nối hơn. Bản quyền © 2022 của Phòng thí nghiệm Silicon Phiên bản 1.1
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Giới thiệu

1. Giới thiệu

Tài liệu này mô tả cách phần mềm Silicon Labs được thiết kế để sử dụng bởi nhiều giao thức trên một chip không dây. Đa giao thức động cắt thời gian radio và
nhanh chóng thay đổi cấu hình để cho phép các giao thức không dây khác nhau hoạt động đáng tin cậy cùng một lúc.

Lưu ý: Thông tin dành riêng cho Zigbee trong tài liệu này áp dụng cho phiên bản 6.10.x trở xuống.

Chi tiết về triển khai đa giao thức động cụ thể được cung cấp trong các ghi chú ứng dụng sau:

AN1133: Phát triển đa giao thức động với Bluetooth và Zigbee EmberZNet SDK 6.x trở xuống

AN1134: Phát triển đa giao thức động với Bluetooth và các giao thức độc quyền trên RAIL trong GSDK v2.x

AN1269: Phát triển đa giao thức động với Bluetooth® và các giao thức độc quyền trên RAIL trong GSDK v3.x

AN1209: Phát triển đa giao thức động với Bluetooth và Connect

AN1265: Phát triển đa giao thức động với Bluetooth® và OpenThread trong GSDK v3.x

1.1 Thuật ngữ

Sau đây liệt kê một số thuật ngữ cụ thể cho việc triển khai đa giao thức động.

Lớp giao diện trừu tượng vô tuyến (RAIL): API phổ biến thông qua đó mã cấp cao hơn có quyền truy cập vào đài EFR32.

Radio Operation: Một hành động cụ thể được lên lịch. Hoạt động vô tuyến có cả cấu hình vô tuyến và mức độ ưu tiên. Mỗi ngăn xếp có thể yêu cầu bộ lập lịch
radio thực hiện tối đa hai thao tác radio (nhận nền và Nhận theo lịch hoặc truyền theo lịch) tại một thời điểm: • Nhận nền: Nhận liên tục, dự định bị gián
đoạn bởi các hoạt

động theo lịch và được trả lại sau khi chúng hoàn thành
sự.

• Nhận theo lịch trình: Nhận các gói hoặc tính toán RSSI tại một thời điểm và khoảng thời gian xác định. (Các nhà phát triển làm việc trên RAIL, lưu ý rằng
về mặt API RAIL, "Nhận theo lịch trình" như được sử dụng trong tài liệu này đề cập đến bất kỳ hoạt động nhận nào, ngoài RAIL_StartRx và không chỉ giới
hạn trong phạm vi cho RAIL_ScheduleRx.)

• Truyền theo lịch trình: Bất kỳ một trong các hoạt động truyền khác nhau bao gồm truyền ngay lập tức, truyền theo lịch trình (trong tương lai) hoặc truyền
phụ thuộc vào CCA. (Các nhà phát triển làm việc trên RAIL, lưu ý rằng về mặt API RAIL, "Truyền theo lịch trình" như được sử dụng trong tài liệu này đề
cập đến bất kỳ hoạt động truyền nào và không bị giới hạn trong phạm vi đối với RAIL_StartScheduledTx. )

Radio Config: Xác định trạng thái của phần cứng phải được sử dụng để thực hiện thao tác radio.

Bộ lập lịch radio: Thành phần RAIL phân xử giữa các giao thức khác nhau để xác định giao thức nào sẽ có quyền truy cập vào radio.

Mức độ ưu tiên: Mỗi hoạt động từ mỗi ngăn xếp có mức độ ưu tiên mặc định. Một ứng dụng có thể thay đổi các ưu tiên mặc định.

Thời gian trượt: Thời gian tối đa trong tương lai khi hoạt động có thể được bắt đầu nếu nó không thể bắt đầu vào thời gian bắt đầu được yêu cầu.

Năng suất: Một ngăn xếp phải tự nguyện sinh ra khi kết thúc một hoạt động hoặc chuỗi các hoạt động, trừ khi nó đang thực hiện nhận nền.
Cho đến khi ngăn xếp mang lại lợi nhuận, bộ lập lịch sẽ không lập lịch các tác vụ có mức độ ưu tiên thấp hơn.

Hạt nhân RTOS (Hệ điều hành thời gian thực): Phần của hệ điều hành chịu trách nhiệm quản lý tác vụ cũng như giao tiếp và đồng bộ hóa giữa các tác vụ. Việc
triển khai này sử dụng hạt nhân Micrium OS-5.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 2
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Giới thiệu

1.2 Kiến trúc

Đa giao thức động sử dụng phần cứng EFR32 và phần mềm RAIL làm khối xây dựng của nó. Sau đó, Zigbee, Bluetooth và/hoặc bất kỳ giao thức độc quyền hoặc
dựa trên tiêu chuẩn nào khác có thể được xây dựng trên các lớp nền tảng này, sử dụng Micrium để quản lý việc thực thi mã giữa các giao thức khác
nhau. Sơ đồ sau đây minh họa cấu trúc chung của các mô-đun phần mềm.

Hình 1.1. Kiến trúc phần mềm đa giao thức động chung

Bắt đầu với phiên bản 2.0, RAIL yêu cầu chuyển bộ xử lý cấu hình vô tuyến cho lệnh gọi API RAIL. Cấu hình này mô tả các tham số PHY khác nhau được sử
dụng bởi ngăn xếp.

Micrium OS là một RTOS cho phép ngăn xếp và logic ứng dụng chia sẻ thời gian thực thi CPU.

Bộ lập lịch Radio là một thư viện phần mềm trả lời các yêu cầu của ngăn xếp một cách thông minh để thực hiện các hoạt động vô tuyến nhằm tối đa hóa
khả năng tin cậy và giảm thiểu độ trễ. API do RAIL cung cấp không sử dụng radio bỏ qua bộ lập lịch Radio.

Lõi RAIL định cấu hình phần cứng EFR32 theo hướng dẫn từ bộ lập lịch radio.

1.3 Hình ảnh phần sụn đơn

Đa giao thức động cho phép nhà phát triển phần mềm tạo một tệp nhị phân nguyên khối duy nhất được tải vào EFR32. Ngày cập nhật phần mềm được thực hiện bằng cách nâng

cấp toàn bộ tệp nhị phân. Điều này được thực hiện bằng cách sử dụng Bộ tải khởi động Gecko, bạn có thể tìm thấy thông tin chi tiết trong UG266: Hướng dẫn dành cho người
dùng Bộ tải khởi động Gecko của Phòng thí nghiệm Silicon cho GSDK 3.2 trở xuống và UG489: Hướng dẫn dành cho người dùng Bộ tải khởi động Gecko của Phòng thí nghiệm Silicon

Hướng dẫn dành cho GSDK 4.0 trở lên.

1.4 Hoạt động ngăn xếp độc lập

Các ngăn xếp của Phòng thí nghiệm Silicon vẫn hoạt động độc lập với nhau trong tình huống Đa giao thức động. Một số hoạt động vô tuyến tồn tại lâu
dài nhất định sẽ có tác động đến độ trễ và hoạt động tuân thủ của giao thức khác. Việc xác định bất kỳ cân nhắc đặc biệt nào cho những sự kiện này là
tùy thuộc vào ứng dụng. Xem phần 2. Bộ lập lịch Radio để biết thêm thông tin.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 3
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google Bộ lập lịch phát thanh

2. Bộ lập lịch phát thanh

Bộ lập lịch vô tuyến là một thành phần của RAIL (Lớp giao diện trừu tượng vô tuyến). RAIL cung cấp API và lớp giao diện vô tuyến trực quan, dễ tùy chỉnh, hỗ trợ các

giao thức không dây dựa trên tiêu chuẩn hoặc độc quyền. Bộ lập lịch vô tuyến được thiết kế để cho phép các hoạt động vô tuyến có thể được lên lịch và ưu tiên. Các hoạt

động vô tuyến khác nhau trong mỗi giao thức có thể quan trọng hơn hoặc ít hơn, hoặc nhạy cảm hơn hoặc ít hơn về thời gian, tùy thuộc vào tình huống. Người lập lịch

trình có thể tính đến những điều đó khi đưa ra quyết định về xung đột và cách phân xử chúng.

Trừ khi bạn đang phát triển các ứng dụng có giao thức tùy chỉnh trên RAIL, hầu hết các chức năng của bộ lập lịch radio đều được xử lý tự động bởi ngăn xếp bên dưới và

mã RAIL. Bạn chỉ cần sử dụng ngăn xếp thông qua API thông thường của nó.

Ở mức cao, ngăn xếp gửi một hoạt động vô tuyến (ví dụ: Nhận theo lịch trình hoặc Truyền theo lịch trình). Các hoạt động vô tuyến được xếp hàng đợi và sau đó được phục
vụ tại một thời điểm trong tương lai dựa trên các tham số của chúng. Khi đến lúc bắt đầu hoạt động vô tuyến, bộ lập lịch kiểm tra xem có tồn tại sự kiện cạnh tranh

hay không và liệu hoạt động có thể bị trì hoãn hay không. Nếu bộ lập lịch không thể chạy sự kiện, nó sẽ trả kết quả về lớp cao hơn, lớp này có thể thử lại với các tham

số mới.

Khi thao tác radio đã bắt đầu, ngăn xếp tương ứng có thể gửi cho bộ lập lịch các thao tác bổ sung dựa trên kết quả của thao tác trước đó (ví dụ: chờ ACK). Khi kết thúc

mỗi hoạt động hoặc chuỗi hoạt động, ngăn xếp phải nhường quyền sử dụng radio.

2.1 Hoạt động vô tuyến

Mỗi sự kiện trong bộ lập lịch được chia thành các phần tử được gọi là Hoạt động Radio, được liên kết với cấu hình radio và mức độ ưu tiên.

Mọi hoạt động đều có mức độ ưu tiên và bị gián đoạn nếu bộ lập lịch nhận được hoạt động có mức độ ưu tiên cao hơn chồng chéo về thời gian. Các hoạt động radio có mức

độ ưu tiên thấp hơn không thể chạy dựa trên các tham số lịch biểu của chúng sẽ không thành công và việc thử lại chúng tùy thuộc vào ngăn xếp tương ứng. Sau khi bộ lập

lịch chủ động chạy một hoạt động vô tuyến từ ngăn xếp, ngăn xếp có thể tiếp tục gửi các hoạt động vô tuyến bổ sung cho đến khi nó tự nguyện mang lại hoặc cho đến khi

bộ lập lịch nhận được hoạt động vô tuyến có mức độ ưu tiên cao hơn và ưu tiên nó. • Nhận trong nền • Nhận

theo lịch trình

• Truyền theo lịch trình

Mỗi ngăn xếp có thể yêu cầu Bộ lập lịch vô tuyến thực hiện tối đa hai hoạt động vô tuyến (nhận nền và Nhận theo lịch trình hoặc

truyền theo lịch trình) tại một thời điểm:

Mỗi hoạt động có các tham số sau:

Tham số Sự miêu tả

Thời gian bắt đầu Một dấu hiệu tại thời điểm nào trong tương lai hoạt động vô tuyến này sẽ chạy. Đây có thể là "chạy ngay bây giờ" hoặc một số giá
trị tính bằng micro giây trong tương lai.

Sự ưu tiên Một số cho biết mức độ ưu tiên tương đối của hoạt động. Khi sử dụng cài đặt mặc định, hoạt động radio Bluetooth LE hầu như

luôn được ưu tiên cao hơn so với hoạt động Zigbee.

Thời gian trượt Khoảng thời gian mà sự kiện có thể bị trì hoãn sau thời gian bắt đầu và vẫn được ngăn xếp chấp nhận.

Đây có thể là 0, trong trường hợp đó, sự kiện không thể bị trượt.

Thời gian giao dịch Khoảng thời gian ước tính cần để hoàn tất giao dịch. Các sự kiện truyền thường có thời gian giao dịch được xác định rõ hơn nhiều,
trong khi các sự kiện nhận thường không xác định. Điều này được sử dụng để giúp bộ lập lịch radio xác định xem một sự kiện có
thể được chạy hay không.

Ngăn xếp xác định các tham số khác nhau này phù hợp với thao tác đang được thực thi. Ví dụ: các sự kiện kết nối Bluetooth thường được lên lịch trong tương lai và không

được phép trượt, trong khi các sự kiện truyền Zigbee thường có thể bị trì hoãn một lượng nhỏ và bắt đầu muộn hơn.

Từ quan điểm của Bộ lập lịch vô tuyến RAIL, truyền theo lịch và nhận theo lịch là giống hệt nhau. Cả hai đều là những hoạt động đơn giản yêu cầu sử dụng radio và do

đó không thể thực hiện đồng thời. Sự khác biệt chỉ rõ ràng ở lớp API RAIL, nơi API TX hoặc RX được gọi.

2.1.1 Nhận nền

Đây là chế độ nhận liên tục dự kiến sẽ bị gián đoạn bởi các hoạt động khác và quay trở lại sau khi chúng hoàn thành. Nếu Back ground Receive có mức độ ưu tiên cao hơn

các hoạt động khác, các hoạt động vô tuyến đó sẽ không được lên lịch và sẽ không chạy. Việc thay đổi mức độ ưu tiên hoặc tự nguyện nhường chỗ là tùy thuộc vào ngăn

xếp hoặc ứng dụng. Xem phần 6.1 Các ví dụ với Nhận nền, Radio năng suất và Chuyển đổi trạng thái để biết các ví dụ về cách nhận nền tương tác với các hoạt động theo

lịch trình.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 4
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google Bộ lập lịch phát thanh

2.1.2 Nhận theo lịch trình

Đây là một nhận tại một thời điểm trong tương lai với một khoảng thời gian xác định. Bộ lập lịch vô tuyến sẽ xem xét thời gian chuyển mạch vô tuyến để quyết định liệu hoạt động

có được lên lịch hay không. Nếu nó không thể được lên lịch thì bộ lập lịch sẽ gửi một sự kiện thất bại tới ngăn xếp cuộc gọi. Thao tác vô tuyến được tự động kéo dài cho đến khi

ngăn xếp tự nguyện nhường chỗ hoặc bộ lập lịch nhận được thao tác có mức ưu tiên cao hơn và làm gián đoạn nó. Việc mở rộng nhận cho phép ngăn xếp tiếp tục hoạt động vô tuyến

dựa trên các yêu cầu của giao thức cấp cao hơn, ví dụ: truyền phản hồi dựa trên dữ liệu nhận được.

2.1.3 Truyền theo lịch trình

Đây là một lần truyền tại một thời điểm trong tương lai với thời lượng tối thiểu. Khoảng thời gian tối thiểu này có thể bao gồm các sự kiện tiếp theo được mong đợi, chẳng hạn

như một ACK tới một đường truyền IEEE 802.15.4. Tuy nhiên, thời gian tối thiểu cho thao tác này không nhất thiết phải bao gồm các sự kiện không mong muốn có thể kéo dài thời

gian vượt quá khoảng thời gian tối thiểu, ví dụ như các lần rút lui do lỗi CCA trong IEEE 802.15.4. Bộ lập lịch vô tuyến sẽ xem xét thời gian chuyển mạch vô tuyến để quyết định

liệu hoạt động có được lên lịch hay không. Nếu nó không thể được lên lịch thì bộ lập lịch sẽ gửi một sự kiện thất bại tới ngăn xếp cuộc gọi.

2.2 Cấu hình đài phát thanh

Mỗi hoạt động vô tuyến được liên kết với một cấu hình vô tuyến được xác định trước để xác định trạng thái của phần cứng phải được sử dụng để thực hiện hoạt động. Cấu hình vô

tuyến theo dõi trạng thái hiện tại của ngăn xếp để các hoạt động vô tuyến trong tương lai sẽ sử dụng cùng các tham số vô tuyến. Radio Configs có thể hoạt động hoặc không hoạt

động. Nếu ngăn xếp thay đổi Cấu hình Radio đang hoạt động thì RAIL cũng thực hiện thay đổi ngay lập tức đối với cấu hình phần cứng, chẳng hạn như thay đổi kênh. Nếu cấu hình

radio hiện không hoạt động thì hoạt động vô tuyến theo lịch trình tiếp theo sẽ sử dụng cấu hình radio mới.

2.3 Ưu tiên

Mỗi hoạt động vô tuyến có một mức độ ưu tiên chỉ ra cho bộ lập lịch hoạt động nào sẽ được thực hiện nếu có sự chồng chéo về thời gian giữa nhiều hoạt động. Bộ lập lịch coi mức

ưu tiên 0 là mức ưu tiên cao nhất và 255 là mức ưu tiên thấp nhất. Bộ lập lịch vô tuyến sẽ cho phép tác vụ có mức ưu tiên cao nhất truy cập vào phần cứng vô tuyến vật lý. Với

hầu hết các tác vụ, quyền kiểm soát chỉ được trả lại cho bộ lập lịch radio khi hoàn thành, nhưng các tác vụ như nhận nền sẽ bị gián đoạn trong trường hợp tác vụ có mức độ ưu

tiên cao hơn được kích hoạt.

Mỗi ngăn xếp có một tập hợp ưu tiên mặc định dựa trên phân tích của Phòng thí nghiệm Silicon về cách hợp tác tốt nhất để tối đa hóa chu kỳ nhiệm vụ và tránh kết nối bị gián đoạn

đối với trường hợp sử dụng chung. Các trường hợp sử dụng cụ thể có thể có các nhu cầu khác nhau. Các ưu tiên như sau, từ cao nhất đến thấp nhất:

1. Truyền theo lịch trình Bluetooth LE

2. Bluetooth LE Nhận theo lịch trình

3. Giao thức khác Truyền theo lịch trình 4. Giao

thức nền khác Nhận

Các ưu tiên này có thể bị ứng dụng ghi đè hoặc thay đổi. Tùy thuộc vào ứng dụng để quyết định trong những trường hợp nào để thay đổi chúng. Phần 5.2 802.15.4 Ưu tiên RAIL và

phần 7.1 Ưu tiên Bluetooth chứa nhiều chi tiết hơn về mức độ ưu tiên cho các phiên bản cụ thể của chúng.

2.4 Thời gian trượt

Mọi hoạt động vô tuyến phải có "thời gian trượt" hoặc thời gian bắt đầu tối đa, nghĩa là thời gian xa nhất trong tương lai khi hoạt động có thể bắt đầu nếu nó không thể bắt đầu

vào thời gian bắt đầu được yêu cầu. Điều này cho phép bộ lập lịch xử lý các sự kiện có mức độ ưu tiên cao hơn xảy ra đồng thời hoặc các sự kiện có mức độ ưu tiên cao hơn kéo

dài hơn thời lượng dự kiến. Giao thức thường quy định thời gian trượt có thể là bao nhiêu, nhưng bộ lập lịch radio có khả năng xử lý việc này trên cơ sở từng hoạt động, cho phép

ngăn xếp trượt một số sự kiện chứ không phải các sự kiện khác. Nói chung, IEEE 802.15.4 có thời gian trượt dài hơn và Bluetooth LE có thời gian trượt tối thiểu.

2,5 năng suất

Khi một chuỗi các hoạt động vô tuyến đang được chạy tích cực, ngăn xếp có thể tiếp tục thêm các hoạt động mở rộng hoạt động ban đầu cho đến khi ngăn xếp không còn gì để làm cho

việc trao đổi thông báo cụ thể. Một ngăn xếp phải tự nguyện nhường trừ khi nó đang thực hiện nhận nền. Nếu một ngăn xếp không mang lại hiệu suất thì nó sẽ tiếp tục mở rộng hoạt

động vô tuyến của nó và các hoạt động vô tuyến có mức độ ưu tiên thấp hơn sau đó sẽ gây ra lỗi quay trở lại ngăn xếp tương ứng đã yêu cầu hoạt động vô tuyến đó. Hoạt động có mức

ưu tiên cao hơn không thể làm gián đoạn hoạt động vô tuyến có mức ưu tiên thấp hơn đang chạy hiện tại mà không mang lại kết quả. Xem phần 6.1 Các ví dụ với Nhận nền, Đầu ra vô

tuyến và Chuyển đổi trạng thái để biết các ví dụ về các tình huống khi cần đầu ra rõ ràng đài phát thanh.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 5
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google Bộ lập lịch phát thanh

2.6 Làm gián đoạn hoạt động vô tuyến

Hoạt động vô tuyến theo lịch trình có thể bị gián đoạn nếu hoạt động ưu tiên cao hơn xung đột với hoạt động đó. Điều này có thể xảy ra trong hai trường hợp sau:

1. Một hoạt động radio theo lịch trình mất nhiều thời gian hơn dự kiến và ngăn xếp tương ứng không mang lại kết quả trước radio có mức độ ưu tiên cao hơn
hoạt động phải bắt đầu.

2. Một hoạt động radio có mức độ ưu tiên cao hơn vừa được lên lịch xảy ra trong tương lai và đã xung đột với hoạt động có mức độ ưu tiên thấp hơn
lên kế hoạch.

2.7 Hoạt động vô tuyến tồn tại lâu dài

Một số Hoạt động vô tuyến tồn tại lâu dài có thể có tác động quá lớn đến hoạt động chính xác của sản phẩm. Ứng dụng có thể cần phối hợp các hoạt động này giữa
các giao thức. Nếu ứng dụng không có thì các ưu tiên của bộ lập lịch radio sẽ được ưu tiên.
Ví dụ: quét năng lượng theo chuẩn IEEE 802.15.4 có thể yêu cầu đài tiếp tục bật để thu thập đủ số đọc năng lượng. Nếu ứng dụng không phối hợp đúng các hoạt động,
quá trình quét có thể bị gián đoạn sớm do hoạt động Bluetooth có mức ưu tiên cao hơn.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 6
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Ví dụ về bộ lập lịch radio

3. Ví dụ về Bộ lập lịch Radio

Tất cả các ví dụ đều sử dụng Bluetooth LE và Zigbee, nhưng các nguyên tắc áp dụng cho các kết hợp Bluetooth/802.15.4 khác.

Bộ lập lịch bắt đầu bằng thao tác nhận nền Zigbee có mức độ ưu tiên thấp. Điều này thể hiện một bộ định tuyến luôn bật có thể cần nhận các gói IEEE
802.15.4 vào những thời điểm không xác định. Kết nối Bluetooth LE cũng đang hoạt động và yêu cầu ngăn xếp phải sẵn sàng nhận sau mỗi 30 ms. Ngăn xếp
Bluetooth LE có thể lên lịch trước cho việc này do tính chất có thể dự đoán được của kết nối.

3.1 Lập kế hoạch ưu tiên

Điều này cung cấp một ví dụ cơ bản về việc phân xử các ưu tiên của các hoạt động vô tuyến khác nhau.

Ngăn xếp Zigbee quyết định rằng nó cần gửi một gói tin. Nó có thể thực hiện điều này như một sự kiện theo yêu cầu, nghĩa là ngăn xếp quyết định rằng nó
muốn gửi một gói ngay bây giờ mà không cần thông báo trước cho bộ lập lịch. Điều này trái ngược với cách thức hoạt động của Bluetooth LE, trong đó các hoạt
động theo lịch trình được biết trước một cách hợp lý. Bộ lập lịch trình đánh giá rằng có thể thực hiện thao tác radio Zigbee TX 1 và vẫn phục vụ sự kiện
tiếp nhận Bluetooth LE có mức độ ưu tiên cao hơn trong tương lai. Vì vậy, bộ lập lịch cho phép sự kiện truyền xảy ra. Ngăn xếp Zigbee thực hiện tất cả các
phần của hoạt động truyền này (chờ xác nhận MAC), và sau đó tự nguyện mang lại. Thời gian giao dịch ước tính của hoạt động vô tuyến truyền Zigbee KHÔNG
bao gồm các lần thử lại.

Trong ví dụ này, Bluetooth LE đã được lên lịch để nhận trong tương lai và ngăn xếp Zigbee muốn truyền. Đối với thao tác radio Zigbee TX 1 đầu tiên, có đủ
thời gian trước khi thao tác radio Bluetooth LE RX 1 để bộ lập lịch cho phép ngăn xếp thực hiện thao tác. Sau đó, khi ngăn xếp Zigbee cố gắng lên lịch cho
Zigbee TX 2, bộ lập lịch sẽ xác định không có đủ thời gian trước sự kiện Bluetooth LE RX 2 có mức độ ưu tiên cao. Tuy nhiên, ngăn xếp Zigbee đã chỉ ra rằng
hành động này có thể trượt thời gian bắt đầu. Bộ lập lịch radio xác định rằng với thời lượng dự kiến của hoạt động radio Bluetooth LE, hoạt động Zigbee
có thể bắt đầu sau sự kiện đó và vẫn nằm trong khoảng thời gian trượt được chỉ định bởi ngăn xếp Zigbee.

Nếu mọi việc diễn ra như mong đợi, hoạt động truyền Zigbee sẽ có lần thử đầu tiên xảy ra mà không có bất kỳ lỗi nào do lập lịch trình.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 7
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Ví dụ về bộ lập lịch radio

3.2 Ví dụ về ngắt ưu tiên

Ví dụ này minh họa một hoạt động có mức ưu tiên cao hơn làm gián đoạn hoạt động có mức ưu tiên thấp hơn.

Ví dụ này bắt đầu giống như ví dụ trước. Cả Zigbee và Bluetooth LE đều có hoạt động vô tuyến được lên lịch mà không có bất kỳ xung đột nào.

Sau đó, ngăn xếp Zigbee quyết định muốn gửi một gói khác cho sự kiện Zigbee TX 2. Bộ lập lịch xác định rằng có thể lên lịch cho sự kiện
này và phục vụ sự kiện Bluetooth LE RX 2 sau đó, dựa trên thời gian tối thiểu mà sự kiện Zigbee TX 2 phải mất. Tuy nhiên, sự kiện Zigbee
TX 2 diễn ra lâu hơn dự kiến do thời gian lùi ngẫu nhiên kéo dài và không mang lại kết quả kịp thời. Điều này làm cho sự kiện xung đột
với hoạt động radio có mức độ ưu tiên cao hơn và do đó, Bộ lập lịch radio làm gián đoạn sự kiện Zigbee và trả lại lỗi cho ngăn xếp cấp
cao hơn. Sự kiện Bluetooth LE diễn ra bình thường và khi hoàn tất, nó tự nguyện chuyển sang bất kỳ hoạt động nào có mức độ ưu tiên thấp
hơn.

Khi nhận được lỗi từ bộ lập lịch radio, ngăn xếp Zigbee ngay lập tức cố gắng thử lại thông báo MAC. Nó lên lịch hoạt động và bao gồm thời
gian trượt. Tại thời điểm này, ngăn xếp Bluetooth LE có quyền ưu tiên hơn radio và do đó hoạt động chưa thể bắt đầu, nhưng bộ lập lịch
chấp nhận hoạt động radio mới. Ngăn xếp Bluetooth LE hoàn tất quá trình nhận theo lịch trình của nó và mang lại đài phát thanh. Sau đó,
bộ lập lịch kích hoạt hoạt động truyền Zigbee xảy ra vì nó vẫn còn trong thời gian trượt của hoạt động bắt đầu ban đầu. Sau khi quá trình
truyền hoàn tất, bộ lập lịch quay trở lại hoạt động nhận nền.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | số 8
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Ví dụ về bộ lập lịch radio

3.3 Hoạt động có mức độ ưu tiên cao hơn được mở rộng

Ví dụ này cho thấy điều gì sẽ xảy ra khi thao tác có mức độ ưu tiên cao hơn mất nhiều thời gian hơn dự kiến ban đầu và khiến thao tác có mức độ
ưu tiên thấp hơn bỏ lỡ cơ hội của nó.

Trong trường hợp này, Bluetooth LE có một lịch trình nhận hiện đang diễn ra. Zigbee quyết định gửi một gói nhưng nó không thể chạy được ngay bây
giờ. Bộ lập lịch chấp nhận hoạt động với giả định rằng sự kiện Bluetooth LE sẽ hoàn thành trước khi kết thúc thời gian trượt của sự kiện Zigbee.
Tuy nhiên, sự kiện Bluetooth LE kéo dài hơn do các gói bổ sung được gửi giữa các thiết bị. Thao tác Bluetooth LE được ưu tiên nên thao tác Zigbee
cuối cùng sẽ hết trượt. Một lỗi được trả về ngăn xếp. Zigbee quyết định truyền lại gói tin. Một lần nữa, ngăn xếp Zigbee chỉ ra rằng hoạt động sẽ
bắt đầu ngay bây giờ nhưng có thể kéo dài trong tương lai. Bộ lập lịch đang trong quá trình thay đổi cấu hình radio nên không thể bắt đầu hoạt
động ngay lập tức. Thay vào đó, nó trượt thời gian bắt đầu thao tác vô tuyến một lượng nhỏ rồi thực hiện thao tác.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 9
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Ví dụ về bộ lập lịch radio

3.4 Hoạt động ưu tiên cao hơn mà không bị gián đoạn

Trong ví dụ này, bộ lập lịch radio đang chạy trên một nút đóng vai trò là thiết bị ngoại vi Bluetooth LE và nút đó có một số kết nối với các
thiết bị trung tâm khác nhau. Nó cũng có một đèn hiệu quảng cáo định kỳ được truyền đi. Hình dưới đây cho thấy trường hợp các sự kiện này hầu
như xảy ra liên tiếp và không cho phép đủ thời gian để chuyển về cấu hình radio Zigbee. Do đó, nó sẽ tạo ra một khoảng thời gian mà ngăn xếp
Zigbee không thể truyền ngay cả với thời gian trượt.

Zigbee yêu cầu bộ lập lịch lên lịch hoạt động truyền phát vô tuyến. Mặc dù bộ lập lịch biết rằng sự kiện sẽ không thành công do các hoạt động
có mức độ ưu tiên cao hơn đã lên lịch, nhưng nó vẫn chấp nhận sự kiện đã lên lịch. Điều này được thực hiện vì hai lý do. Đầu tiên, hoàn cảnh có
thể thay đổi và sự kiện có thể được thực hiện. Thứ hai, ngăn xếp nằm trên bộ lập lịch radio có thể thử thực hiện lại hành động. Nếu kết quả của
việc lập lịch không thành công được trả về ngay lập tức thì nỗ lực thử lại của ngăn xếp sẽ khó có thể thành công vì không có thời gian trôi qua.
Thay vào đó, bằng cách xếp hàng đợi sự kiện và trả lại lỗi sau khi hết thời gian trượt, việc thử lại (với thời gian trượt của chính nó) có cơ
hội thành công cao hơn vì tập hợp các hoạt động vô tuyến sắp tới sẽ khác.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 10
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Ví dụ về bộ lập lịch radio

3.5 Nhận khi Hoạt động có mức độ ưu tiên cao hơn đang chạy

Ví dụ này minh họa điều gì sẽ xảy ra khi Bluetooth LE đang hoạt động và hoạt động có mức độ ưu tiên thấp hơn sẽ nhận dữ liệu.

Trong trường hợp đầu tiên, khi một tin nhắn IEEE 802.15.4 được gửi và ngăn xếp Bluetooth LE đang sử dụng radio để nhận hoạt động, ngăn xếp
Zigbee sẽ không trực tuyến để nhận tin nhắn. Tuy nhiên, người gửi tin nhắn Zigbee sẽ thử lại trong hầu hết các trường hợp và việc lùi lại cũng
như các thay đổi về thời gian khác sẽ không xung đột với các sự kiện nhận Bluetooth đã lên lịch có mức độ ưu tiên cao hơn khác ít có khả năng
xảy ra xung đột. Thông báo Zigbee được nhận thành công.

Trường hợp thứ hai cho thấy, trong trường hợp nhận hoạt động, ngăn xếp Zigbee vẫn có thể bị gián đoạn và không nhận (hoặc ACK) tin nhắn. Giao
tiếp thành công dựa vào việc thử lại ở lớp MAC hoặc lớp cao hơn để gửi lại thông báo này và xác minh thiết bị Đa giao thức động nhận được
thông báo.

Mặc dù có thể có những cân nhắc về việc có nên gián đoạn quá trình nhận đang hoạt động hay không, nhưng rất khó để người lập lịch đưa ra quyết
định đó. Nói chung, tính mạnh mẽ của các giao thức sẽ cho phép các tin nhắn được nhận thành công ngay cả khi bị gián đoạn.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 11
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4. Hệ điều hành Micrium

Mỗi ngăn xếp chạy một tác vụ RTOS riêng sử dụng hạt nhân Micrium OS-5 để cung cấp chuyển đổi tác vụ. Một tác vụ tương đương với một luồng trong các hệ
điều hành khác. Các tác vụ phối hợp sử dụng các cơ chế IPC (liên lạc giữa các quá trình) khác nhau (hàng đợi thông báo và semaphores) để truyền thông tin
qua lại. Các nhiệm vụ khác nhau dựa trên giao thức. Zigbee yêu cầu bốn nhiệm vụ, trong khi Connect yêu cầu năm nhiệm vụ. Các phần sau mô tả xử lý tác vụ
cho Zigbee và Connect.

Lưu ý rằng trong Gecko SDK Suite v3.0, cấu trúc API Bluetooth đã được cập nhật hoàn toàn. Trong số các thay đổi khác, tất cả các cuộc gọi chức năng đã
được đổi tên. Trong các phần sau, cả hai biến thể v2.x và v3.x đều được cung cấp.

4.1 Zigbee và Bluetooth

Hình dưới đây minh họa chuyển đổi tác vụ Micrium OS cho Zigbee và Bluetooth

Hình 4.1. Chuyển đổi tác vụ hệ điều hành Micrium

Ứng dụng Zigbee/Bluetooth Dynamic Multiprotocol yêu cầu một số tác vụ để hoạt động: • Tác vụ Application/

Zigbee Stack • Tác vụ lớp liên kết

Bluetooth • Tác vụ máy chủ

Bluetooth

• Nhiệm vụ nhàn rỗi

Chúng đã được triển khai cho Micrium RTOS cho bạn.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 12
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.1.1 Giao tiếp giữa các tác vụ

Trước khi mô tả các nhiệm vụ, điều quan trọng là phải hiểu các nhiệm vụ giao tiếp với nhau như thế nào. Các tác vụ trong ứng dụng này đồng bộ hóa với nhau
thông qua việc sử dụng một số cờ. Những cờ này được tóm tắt trong các bảng sau:

Bảng 4.1. Cờ trong v3.x

LÁ CỜ Người gửi Người nhận Mục đích

SL_BT_RTOS_EVENT_FLAG_STACK Nhiệm vụ lớp Bluetooth Ngăn xếp Bluetooth cần cập nhật, hãy gọi
liên kết Nhiệm vụ sl_bt_pop_event(sl_bt_msg_t* event)
(v3.x)gecko_wait_event() (v2.x)

SL_BT_RTOS_EVENT_FLAG_LL Tầng liên kết ngắt vô tuyến Lớp liên kết cần cập nhật, hãy gọi sl_bt_priority_han dle()
Nhiệm vụ (v3.x)gecko_priority_handle() (v2.x)

Ứng dụng SL_BT_RTOS_EVENT_FLAG_CMD_WAITING Bluetooth Lệnh đã sẵn sàng trong bộ nhớ dùng chung, hãy gọi gecko_
Nhiệm vụ Nhiệm vụ handle_command()

SL_BT_RTOS_EVENT_FLAG_RSP_WAITING Bluetooth Ứng dụng Phản hồi đã sẵn sàng trong bộ nhớ dùng chung
Nhiệm vụ Nhiệm vụ

SL_BT_RTOS_EVENT_FLAG_EVT_WAITING Bluetooth Ứng dụng Sự kiện đã sẵn sàng trong bộ nhớ dùng chung
Nhiệm vụ Nhiệm vụ

Ứng dụng SL_BT_RTOS_EVENT_FLAG_EVT_HANDLED Bluetooth Sự kiện được xử lý và bộ nhớ dùng chung được sử dụng miễn phí cho
Nhiệm vụ Nhiệm vụ sự kiện tiếp theo

Bảng 4.2. Cờ trong v2.x

LÁ CỜ Người gửi Người nhận Mục đích

BLUETOOTH_EVENT_FLAG_STACK Nhiệm vụ lớp liên kết Bluetooth Ngăn xếp Bluetooth cần cập nhật, hãy gọi
Nhiệm vụ sl_bt_pop_event(sl_bt_msg_t* event)
(v3.x)gecko_wait_event() (v2.x)

BLUETOOTH_EVENT_FLAG_LL Tầng liên kết ngắt vô tuyến Lớp liên kết cần cập nhật, hãy gọi sl_bt_priority_handle()
Nhiệm vụ (v3.x)gecko_priority_handle() (v2.x)

BLUETOOTH_EVENT_FLAG_CMD_WAIT Ứng dụng Bluetooth Lệnh đã sẵn sàng trong bộ nhớ dùng chung, hãy gọi gecko_ han
ING Nhiệm vụ Nhiệm vụ dle_command()

BLUETOOTH_EVENT_FLAG_RSP_WAIT Ứng dụng tác vụ Bluetooth Phản hồi đã sẵn sàng trong bộ nhớ dùng chung
ING Nhiệm vụ

BLUETOOTH_EVENT_FLAG_EVT_WAIT Ứng dụng tác vụ Bluetooth Sự kiện đã sẵn sàng trong bộ nhớ dùng chung
ING Nhiệm vụ

BLUETOOTH_EVENT_FLAG_EVT_HAN Ứng dụng Bluetooth Sự kiện được xử lý và bộ nhớ dùng chung được sử dụng miễn phí cho sự
DLED Nhiệm vụ Nhiệm vụ kiện tiếp theo

Sơ đồ sau đây minh họa cách các cờ này được sử dụng để đồng bộ hóa các tác vụ. Việc đặt tên cờ là dành cho GSDK v2.x. Đối với v3.x, phương thức này giống nhau,
chỉ khác tên như được phản ánh trong Bảng 4.1 Các cờ trong v3.x ở trang 13.

Ngoài các cờ này, trình xử lý lệnh gecko còn sử dụng một mutex để đảm bảo an toàn cho luồng. Điều này giúp có thể gọi các lệnh BGAPI từ nhiều tác vụ.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 13
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 14
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.1.2 Mô tả nhiệm vụ

4.1.2.1 Ứng dụng/Tác vụ ngăn xếp Zigbee

Tác vụ Ngăn xếp ứng dụng/Zigbee chịu trách nhiệm thiết lập tất cả các tác vụ khác khi khởi động, bao gồm tác vụ Máy chủ Bluetooth và tác vụ Lớp
liên kết Bluetooth. Zigbee có một bộ API lớn và phong phú và các API này không an toàn cho luồng. Do đó, tất cả mã gọi API ngăn xếp Zigbee phải
được thực thi từ tác vụ Ngăn xếp ứng dụng/Zigbee. Nếu ứng dụng yêu cầu một số API ngăn xếp Zigbee được gọi từ một tác vụ không phải là tác vụ Ứng
dụng/Ngăn xếp Zigbee, chúng tôi khuyên bạn nên lên lịch một sự kiện tùy chỉnh từ trong tác vụ không phải trong ngăn xếp Zigbee. Trong hàm xử lý sự
kiện tương ứng cho sự kiện tùy chỉnh, API ngăn xếp Zigbee có thể được sử dụng vì trình xử lý sự kiện sẽ được gọi từ bối cảnh Nhiệm vụ ngăn xếp
Zigbee. Bluetooth có một bộ API tương đối nhỏ được sắp xếp theo thứ tự thông qua Lớp thích ứng BGAPI RTOS. Do đó, sẽ an toàn khi gọi bất kỳ API
Bluetooth nào từ một tác vụ không phải tác vụ Ngăn xếp Ứng dụng/Zigbee.

4.1.2.2 Tác vụ lớp liên kết Bluetooth

Mục đích của nhiệm vụ lớp liên kết là cập nhật lớp liên kết phía trên. Luồng tác vụ giống nhau trong v3.x và v2.x.

Trong v3x: Tác vụ lớp liên kết đợi cờ SL_BT_RTOS_EVENT_FLAG_LL được đặt trước khi chạy. Lớp liên kết phía trên được cập nhật bằng cách gọi
sl_bt_priority_handle(). Cờ SL_BT_RTOS_EVENT_FLAG_LL được đặt bởi BluetoothLLCallback(), được gọi từ trình xử lý ngắt nhận biết nhân. Tác vụ này
được ưu tiên cao nhất sau tác vụ bắt đầu Bluetooth.

Trong v2x: Tác vụ lớp liên kết đợi cờ BLUETOOTH_EVENT_FLAG_LL được đặt trước khi chạy. Lớp liên kết phía trên được cập nhật bằng cách gọi
gecko_priority_handle(). Cờ BLUETOOTH_EVENT_FLAG_LL được đặt bởi BluetoothLLCallback(), được gọi từ trình xử lý ngắt nhận biết nhân. Tác vụ này
được ưu tiên cao nhất sau tác vụ bắt đầu Bluetooth.

4.1.2.3 Tác vụ máy chủ Bluetooth

Mục đích của tác vụ này là cập nhật ngăn xếp Bluetooth, phát hành các sự kiện và xử lý các lệnh. Tác vụ này có mức ưu tiên cao hơn bất kỳ tác vụ
ứng dụng nào, nhưng thấp hơn tác vụ lớp liên kết.

4.1.2.4 Tác vụ nhàn rỗi

Khi không có tác vụ nào sẵn sàng để chạy, HĐH sẽ gọi tác vụ nhàn rỗi. Theo mặc định, tác vụ nhàn rỗi đặt MCU vào chế độ ngủ khả dụng thấp nhất,
EM2.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 15
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.2 Kết nối và Bluetooth

Hình dưới đây minh họa chuyển đổi tác vụ Micrium OS cho Connect và Bluetooth

Hình 4.2. Chuyển đổi tác vụ hệ điều hành Micrium

Ứng dụng Đa giao thức động Connect/Bluetooth yêu cầu một số tác vụ để hoạt động:

• Nhiệm vụ Khung ứng dụng/Ứng dụng khách hàng

• Kết nối tác vụ ngăn xếp

• Tác vụ lớp liên kết Bluetooth

• Tác vụ máy chủ Bluetooth

• Nhiệm vụ nhàn rỗi

Chúng đã được triển khai cho Micrium RTOS cho bạn.

Trong Gecko SDK Suite v3.x, cả Connect và Bluetooth đều được chuyển sang cơ sở hạ tầng dựa trên thành phần Nền tảng Gecko được cải tiến. Mặc dù trong nhiều trường

hợp, luồng vẫn giữ nguyên, các lệnh API, tên cờ và các chức năng khác đã thay đổi. Chương này lưu ý nơi v3.x khác với triển khai v2.x.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 16
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.2.1 Giao tiếp giữa các tác vụ

Trước khi mô tả các nhiệm vụ, điều quan trọng là phải hiểu các nhiệm vụ giao tiếp với nhau như thế nào. Các tác vụ trong ứng dụng này đồng bộ hóa với nhau
thông qua việc sử dụng một số cờ. Những cờ này được tóm tắt trong các bảng sau:

Bảng 4.3. Cờ trong v3.x

LÁ CỜ Người gửi Mục đích của người nhận

SL_BT_RTOS_EVENT_FLAG_STACK Nhiệm vụ lớp Bluetooth Ngăn xếp Bluetooth cần cập nhật, hãy gọi
liên kết Nhiệm vụ sl_bt_pop_event(sl_bt_msg_t* event)

SL_BT_RTOS_EVENT_FLAG_LL Đài phát thanh bị Lớp liên kết Lớp liên kết cần cập nhật, hãy gọi sl_bt_priority_han dle()
gián đoạn Nhiệm vụ

Ứng dụng SL_BT_RTOS_EVENT_FLAG_CMD_WAITING Bluetooth Lệnh Bluetooth đã sẵn sàng trong bộ nhớ dùng chung, hãy gọi
Nhiệm vụ Nhiệm vụ sli_bgapi_cmd_handler_delegate()

SL_BT_RTOS_EVENT_FLAG_RSP_WAITING Bluetooth Ứng dụng Phản hồi đã sẵn sàng trong bộ nhớ dùng chung
Nhiệm vụ Nhiệm vụ

SL_BT_RTOS_EVENT_FLAG_EVT_WAITING Bluetooth Ứng dụng Sự kiện đã sẵn sàng trong bộ nhớ dùng chung
Nhiệm vụ Nhiệm vụ

Ứng dụng SL_BT_RTOS_EVENT_FLAG_EVT_HANDLED Bluetooth Sự kiện được xử lý và bộ nhớ dùng chung được sử dụng miễn phí cho sự
Nhiệm vụ Nhiệm vụ kiện tiếp theo

FLAG_IPC_COMMAND_PENDING Ứng dụng Kết nối Một lệnh Connect đã sẵn sàng trong bộ nhớ dùng chung, hãy gọi
Nhiệm vụ Nhiệm vụ emAfPluginMicriumRtosHandleIncomingApiCom mand()

FLAG_IPC_RESPONSE_PENDING Kết nối Ứng dụng Phản hồi cho lệnh Kết nối đã sẵn sàng trong chia sẻ
Nhiệm vụ Nhiệm vụ ký ức

FLAG_IPC_CALLBACK_PENDING Kết nối Ứng dụng Một hoặc nhiều lệnh gọi lại có sẵn trong hàng đợi gọi lại
Nhiệm vụ Nhiệm vụ

Bảng 4.4. Cờ trong v2.x

LÁ CỜ Người gửi Người nhận Mục đích

BLUETOOTH_EVENT_FLAG_STACK Tác vụ lớp liên kết Tác vụ Bluetooth Ngăn xếp Bluetooth cần cập nhật, hãy gọi
gecko_wait_event()

BLUETOOTH_EVENT_FLAG_LL Tầng liên kết ngắt vô tuyến Lớp liên kết cần cập nhật, hãy gọi gecko_priori
Nhiệm vụ ty_handle()

BLUETOOTH_EVENT_FLAG_CMD_WAIT Ứng dụng Tác vụ Bluetooth Một lệnh Bluetooth đã sẵn sàng trong bộ nhớ dùng chung, hãy
ING Nhiệm vụ gọi gecko_ handle_command()

BLUETOOTH_EVENT_FLAG_RSP_WAIT Ứng dụng tác vụ Bluetooth Phản hồi đã sẵn sàng trong bộ nhớ dùng chung
ING Nhiệm vụ

BLUETOOTH_EVENT_FLAG_EVT_WAIT Ứng dụng tác vụ Bluetooth Sự kiện đã sẵn sàng trong bộ nhớ dùng chung
ING Nhiệm vụ

BLUETOOTH_EVENT_FLAG_EVT_HAN Ứng dụng Sự kiện tác vụ Bluetooth được xử lý và bộ nhớ dùng chung được sử dụng miễn phí cho
DLED Nhiệm vụ sự kiện tiếp theo

FLAG_IPC_COMMAND_PENDING Ứng dụng Tác vụ kết nối Một lệnh kết nối đã sẵn sàng trong bộ nhớ dùng chung, hãy gọi
Nhiệm vụ emAfPluginMicriumRtosHandleIncomingApi
Yêu cầu()

FLAG_IPC_RESPONSE_PENDING Kết nối ứng dụng tác vụ Phản hồi cho lệnh Kết nối đã sẵn sàng trong bộ nhớ
Nhiệm vụ dùng chung

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 17
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

LÁ CỜ Người gửi Người nhận Mục đích

FLAG_IPC_CALLBACK_PENDING Kết nối ứng dụng tác vụ Một hoặc nhiều lệnh gọi lại có sẵn trong hàng đợi gọi lại
Nhiệm vụ

Sơ đồ sau đây minh họa cách các cờ này được sử dụng để đồng bộ hóa các tác vụ. Việc đặt tên cờ là dành cho GSDK v2.x. Đối với v3.x, phương thức này giống
nhau, chỉ khác tên như được phản ánh trong Bảng 4.3 Các cờ trong v3.x ở trang 17.

Ngoài các cờ này, trình xử lý lệnh Connect và Bluetooth sử dụng các mutex để đảm bảo an toàn cho luồng. Điều này giúp có thể gọi các lệnh BGAPI và Kết nối
API ngăn xếp từ nhiều tác vụ.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 18
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.2.2 Mô tả tác vụ kết nối

4.2.2.1 Khởi tạo tác vụ

Trong v2.x, tác vụ Ngăn xếp kết nối chịu trách nhiệm thiết lập tất cả các tác vụ khác khi khởi động, bao gồm tác vụ Khung ứng dụng, tác
vụ Máy chủ Bluetooth và tác vụ Lớp liên kết Bluetooth.

Việc tạo và khởi tạo tác vụ được xử lý theo cách khác trong v3.x, như được minh họa trong lưu đồ sau.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 19
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.2.2.2 Tác vụ ngăn xếp kết nối

Sau khi khởi tạo, tác vụ Ngăn xếp kết nối giống nhau trong cả v2.x và v3.x. Tác vụ Ngăn xếp Kết nối thực thi vòng lặp chính của ngăn xếp và xử lý các thông báo API

IPC đến từ tác vụ Khung ứng dụng và các tác vụ ứng dụng tùy chỉnh khác tùy chọn. Điều này được thực hiện bằng cách kiểm tra theo kiểu không chặn xem cờ hệ điều hành

FLAG_IPC_COMMAND_PENDING có được đặt hay không. Nếu đúng như vậy, thông báo API sẽ được tìm nạp từ bộ nhớ dùng chung và API ngăn xếp tương ứng được gọi. Sau đó, phản

hồi bao gồm trạng thái trả về của lệnh gọi API (nếu có) sẽ được đóng gói trong RAM dùng chung và FLAG_IPC_RESPONSE_PENDING được đặt. Sau khi tác vụ Ngăn xếp kết nối

mang lại, tác vụ mà lệnh API bắt nguồn sẽ tiếp tục thực thi và phân tích cú pháp phản hồi.

Tác vụ Ngăn xếp Kết nối cũng gửi các thông báo gọi lại IPC tới tác vụ Khung ứng dụng. Với mục đích này, khi một cuộc gọi lại ngăn xếp kích hoạt, một thông báo IPC

tương ứng sẽ được đặt trong hàng đợi của hệ điều hành và cờ FLAG_IPC_CALLBACK_PENDING được đặt. Sau khi tác vụ Ngăn xếp kết nối có kết quả, tác vụ Khung ứng dụng sẽ

có thể chạy và xử lý bất kỳ thông báo gọi lại nào có sẵn trong hàng đợi.

4.2.2.3 Khung ứng dụng/Tác vụ ứng dụng khách hàng

Tác vụ Khung ứng dụng thực thi vòng lặp chính của khung ứng dụng, vòng lặp này gọi các phần bổ trợ và lệnh gọi lại tick() của ứng dụng và chạy các sự kiện ứng dụng.

Tác vụ này cũng xử lý các thông báo gọi lại IPC đến từ tác vụ Ngăn xếp kết nối và gửi chúng đến các plugin đăng ký và ứng dụng.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 20
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.2.2.4 Tác vụ lớp liên kết Bluetooth

Mục đích của nhiệm vụ lớp liên kết là cập nhật lớp liên kết phía trên. Luồng tác vụ giống nhau trong v3.x và v2.x.

v3.x: Tác vụ lớp liên kết đợi cờ SL_BT_RTOS_EVENT_FLAG_LL được đặt trước khi chạy. Lớp liên kết phía trên được cập nhật bằng cách gọi
sl_bt_priority_handle(). Cờ SL_BT_RTOS_EVENT_FLAG_LL được đặt bởi sli_bt_rtos_ll_callback(), được gọi từ trình xử lý ngắt nhận biết kernel. Tác
vụ này được ưu tiên cao nhất sau tác vụ bắt đầu Bluetooth.

v2.x: Tác vụ lớp liên kết đợi cờ BLUETOOTH_EVENT_FLAG_LL được đặt trước khi chạy. Lớp liên kết phía trên được cập nhật bằng cách gọi
gecko_priority_handle(). Cờ BLUETOOTH_EVENT_FLAG_LL được đặt bởi BluetoothLLCallback(), được gọi từ trình xử lý ngắt nhận biết nhân. Tác vụ này
được ưu tiên cao nhất sau tác vụ bắt đầu Bluetooth.

4.2.2.5 Tác vụ máy chủ Bluetooth

Mục đích của tác vụ này là cập nhật ngăn xếp Bluetooth, phát hành các sự kiện và xử lý các lệnh. Tác vụ này có mức ưu tiên cao hơn bất kỳ tác vụ
ứng dụng nào, nhưng thấp hơn tác vụ lớp liên kết.

4.2.2.6 Tác vụ nhàn rỗi

Khi không có tác vụ nào sẵn sàng để chạy, HĐH sẽ gọi tác vụ nhàn rỗi. Theo mặc định, tác vụ nhàn rỗi đặt MCU vào chế độ ngủ khả dụng thấp nhất,
EM2.

4.3 Cập nhật Ngăn xếp Bluetooth v3.x

Ngăn xếp Bluetooth phải được cập nhật định kỳ. Tác vụ máy chủ Bluetooth đọc sự kiện cập nhật định kỳ tiếp theo từ ngăn xếp bằng cách gọi ing
sl_bt_can_sleep_ticks(); ngăn xếp được cập nhật bằng cách gọi sl_bt_pop_event(sl_bt_msg_t* event) (v3.x). Điều này cho phép ngăn xếp xử lý các
thông báo từ lớp liên kết cũng như các thông báo nội bộ của chính nó cho các hành động được định thời gian mà nó cần thực hiện.

4.3.1 Phát hành Sự kiện Bluetooth trong v3.x

Tác vụ máy chủ Bluetooth đặt cờ SL_BT_RTOS_EVENT_FLAG_EVT_WAITING để cho biết tác vụ ứng dụng Bluetooth rằng một sự kiện đã sẵn sàng để truy xuất.
Mỗi lần chỉ có thể truy xuất một sự kiện. Cờ SL_BT_RTOS_EVENT_FLAG_EVT_WAITING bị xóa bởi tác vụ ứng dụng khi nó đã truy xuất sự kiện. Cờ
SL_BT_RTOS_EVENT_FLAG_EVT_WAITING được đặt bởi tác vụ ứng dụng để cho biết rằng việc xử lý sự kiện đã hoàn tất.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 21
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.3.2 Xử lý lệnh Bluetooth trong v3.x

Các lệnh Bluetooth có thể được gửi đến ngăn xếp từ nhiều tác vụ. Phản hồi cho các lệnh này được chuyển tiếp đến tác vụ gọi.
Các lệnh và các cờ SL_BT_RTOS_EVENT_FLAG_CMD_WAITING
là đồng và
bộ các
hóa phản hồi SL_BT_RTOS_EVENT_FLAG_RSP_WAITING và bộ ngắt kết nối BluetoothMutex.

Các lệnh được chuẩn bị và gửi đến ngăn xếp bằng một hàm trợ giúp có tên là sli_bt_cmd_handler_rtos_delegate(). Hàm này được gọi bởi
bất kỳ hàm BGAPI nào và được thực hiện đăng ký lại thông qua việc sử dụng một mutex. Chức năng bắt đầu bằng cách chờ xử lý trên mutex.
Khi nó giành được quyền kiểm soát mutex, lệnh được chuẩn bị và đặt vào bộ nhớ dùng chung, sau đó cờ SL_BT_RTOS_EVENT_FLAG_CMD_WAITING được
thiết lập để chỉ ra cho ngăn xếp rằng một lệnh đang chờ được xử lý. Cờ này bị xóa bởi tác vụ máy chủ Bluetooth để cho biết rằng lệnh đã được
gửi đến ngăn xếp và giờ đây có thể gửi lệnh khác một cách an toàn.

Sau đó, việc thực thi sẽ phụ thuộc vào cờ SL_BT_RTOS_EVENT_FLAG_RSP_WAITING, được đặt bởi tác vụ máy chủ Bluetooth khi lệnh đã được thực thi.
Điều này chỉ ra rằng một phản hồi cho lệnh đang chờ. Cuối cùng, mutex được giải phóng.

Sơ đồ sau minh họa cách hoạt động của tác vụ Bluetooth Host.

1. Khi khởi động tác vụ, SL_BT_RTOS_EVENT_FLAG_STACK được đặt để chỉ ra rằng ngăn xếp cần cập nhật và
Cờ SL_BT_RTOS_EVENT_FLAG_EVT_HANDLED được đặt để cho biết hiện không có sự kiện nào đang được xử lý.

2. Tiếp theo, nếu cờ SL_BT_RTOS_EVENT_FLAG_CMD_WAITING được đặt, sli_bgapi_set_cmd_handler_delegate() được gọi tới han
dle lệnh.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 22
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

3. Sau đó, nếu các cờ SL_BT_RTOS_EVENT_FLAG_STACK và SL_BT_RTOS_EVENT_FLAG_EVT_HANDLED được đặt, thì sl_bt_pop_event(sl_bt_msg_t* event) được gọi
để nhận một sự kiện từ ngăn xếp. Nếu một sự kiện được tìm thấy đang chờ, cờ SL_BT_RTOS_EVENT_FLAG_EVT_WAITING được đặt và cờ
SL_BT_RTOS_FLAG_EVT_HANDLED bị xóa để cho biết tác vụ ứng dụng rằng một sự kiện đã sẵn sàng được xử lý và cho tác vụ máy chủ Bluetooth rằng một
sự kiện hiện đang trong quá trình xử lý. Nếu không, cờ SL_BT_RTOS_EVENT_FLAG_STACK sẽ bị xóa để chỉ ra rằng ngăn xếp không yêu cầu cập nhật.

4. Tại thời điểm này, tác vụ sẽ kiểm tra xem ngăn xếp có yêu cầu cập nhật hay không và liệu có sự kiện nào đang chờ xử lý hay không. Nếu không có
sự kiện nào đang chờ xử lý và ngăn xếp không cần cập nhật thì có thể ngủ an toàn và lệnh gọi sl_bt_can_sleep_ticks() được thực hiện để xác định
hệ thống có thể ngủ trong bao lâu. Sau đó, tác vụ máy chủ Bluetooth thực hiện tạm dừng theo thời gian trên các cờ SL_BT_RTOS_EVENT_FLAG_STACK
và SL_BT_RTOS_EVENT_FLAG_CMD_WAITING. SL_BT_RTOS_EVENT_FLAG_EVT_HANDLED

5. Nếu hết thời gian chờ và không có cờ nào được đặt trong thời gian được xác định ở bước 4, thì SL_BT_RTOS_EVENT_FLAG_STACK
được đặt để chỉ ra rằng ngăn xếp yêu cầu cập nhật.

6. Các bước 2 – 5 được lặp lại vô thời hạn.

4.4 Cập nhật Ngăn xếp Bluetooth v2.x

Ngăn xếp Bluetooth phải được cập nhật định kỳ. Tác vụ máy chủ Bluetooth đọc sự kiện cập nhật định kỳ tiếp theo từ ngăn xếp bằng cách gọi ing
gecko_can_sleep_ticks(); ngăn xếp được cập nhật bằng cách gọi gecko_wait_event(). Điều này cho phép ngăn xếp xử lý các thông báo từ lớp liên kết
cũng như các thông báo nội bộ của chính nó cho các hành động được định thời gian mà nó cần thực hiện.

4.4.1 Phát hành Sự kiện Bluetooth trong v2.x

Tác vụ máy chủ Bluetooth đặt cờ BLUETOOTH_EVENT_FLAG_EVT_WAITING để cho biết tác vụ ứng dụng Bluetooth rằng một sự kiện đã sẵn sàng để truy xuất.
Mỗi lần chỉ có thể truy xuất một sự kiện. Cờ BLUETOOTH_EVENT_FLAG_EVT_WAITING sẽ bị xóa bởi tác vụ ứng dụng khi nó đã truy xuất sự kiện. Cờ
BLUETOOTH_EVENT_FLAG_EVT_HANDLED do tác vụ ứng dụng đặt để cho biết rằng quá trình xử lý sự kiện đã hoàn tất.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 23
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

4.4.2 Xử lý lệnh Bluetooth trong v2.x

Các lệnh Bluetooth có thể được gửi đến ngăn xếp từ nhiều tác vụ. Phản hồi cho các lệnh này được chuyển tiếp đến tác vụ gọi.
Các lệnh và phản hồi được đồng bộ hóa với các cờ BLUETOOTH_EVENT_FLAG_CMD_WAITING và BLUE TOOTH_EVENT_FLAG_RSP_WAITING và bộ ngắt kết nối
BluetoothMutex.

Các lệnh được chuẩn bị và gửi đến ngăn xếp bằng một hàm trợ giúp có tên là rtos_gecko_handle_command(). Hàm này được gọi bởi bất kỳ hàm
BGAPI nào và được thực hiện đăng ký lại thông qua việc sử dụng một mutex. Chức năng bắt đầu bằng cách chờ xử lý trên mutex. Khi nó giành
được quyền kiểm soát mutex, lệnh được chuẩn bị và đặt vào bộ nhớ dùng chung, sau đó cờ BLUE TOOTH_EVENT_FLAG_CMD_WAITING được thiết lập
để chỉ ra cho ngăn xếp rằng một lệnh đang chờ được xử lý. Cờ này bị xóa bởi tác vụ máy chủ Bluetooth để cho biết rằng lệnh đã được gửi đến
ngăn xếp và giờ đây có thể gửi lệnh khác một cách an toàn.

Sau đó, việc thực thi sẽ phụ thuộc vào cờ BLUETOOTH_EVENT_FLAG_RSP_WAITING, được thiết lập bởi tác vụ máy chủ Bluetooth khi lệnh đã được
thực thi. Điều này chỉ ra rằng một phản hồi cho lệnh đang chờ. Cuối cùng, mutex được phát hành.

Sơ đồ sau minh họa cách hoạt động của tác vụ Bluetooth Host.

1. Khi khởi động tác vụ, BLUETOOTH_EVENT_FLAG_STACK được đặt để cho biết ngăn xếp cần cập nhật và BLUE
Cờ TOOTH_EVENT_FL AG_EVT_HANDLED được đặt để cho biết hiện không có sự kiện nào đang được xử lý.

2. Tiếp theo, nếu cờ BLUETOOTH_EVENT_FLAG_CMD_WAITING được đặt, gecko_handle_command() được gọi để xử lý lệnh.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 24
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google hệ điều hành micrium

3. Sau đó, nếu các cờ BLUETOOTH_EVENT_FLAG_STACK và BLUETOOTH_EVENT_FLAG_EVT_HANDLED được đặt, thì gecko_wait_event() được gọi để lấy một sự kiện
từ ngăn xếp. Nếu một sự kiện được phát hiện đang chờ, thì cờ BLUE TOOTH_EVENT_FLAG_EVT_WAITING được đặt và cờ BLUETOOTH_EVENT_FLAG_EVT_HANDLED
sẽ bị xóa để cho biết tác vụ ứng dụng rằng một sự kiện đã sẵn sàng được xử lý và cho tác vụ máy chủ Bluetooth rằng một sự kiện hiện đang được
xử lý xử lý. Nếu không, cờ BLUETOOTH_EVENT_FLAG_STACK sẽ bị xóa để cho biết rằng ngăn xếp không yêu cầu cập nhật.

4. Tại thời điểm này, tác vụ sẽ kiểm tra xem ngăn xếp có yêu cầu cập nhật hay không và liệu có sự kiện nào đang chờ xử lý hay không. Nếu không có
sự kiện nào đang chờ xử lý và ngăn xếp không cần cập nhật thì có thể ngủ an toàn và lệnh gọi gecko_can_sleep_ticks() được thực hiện để xác định
hệ thống có thể ngủ trong bao lâu. Sau đó, tác vụ máy chủ Bluetooth thực hiện tạm dừng theo thời gian trên các cờ BLUE TOOTH_EVENT_FLAG_STACK,
BLUETOOTH_EVENT_FLAG_EVT_HANDLED và BLUETOOTH_EVENT_FLAG_CMD_WAIT ING.

5. Nếu hết thời gian chờ và không có cờ nào được đặt trong thời gian được xác định ở bước 4, thì BLUETOOTH_EVENT_FLAG_STACK
được đặt để chỉ ra rằng ngăn xếp yêu cầu cập nhật.

6. Các bước 2 – 5 được lặp lại vô thời hạn.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 25
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai đa giao thức với ngăn xếp dựa trên 802.15.4

5. Triển khai Đa giao thức với Ngăn xếp dựa trên 802.15.4

Chương này cung cấp thông tin chung về việc triển khai ngăn xếp dựa trên 802.15.4 chẳng hạn như Zigbee hoặc Connect như một phần của ứng dụng
multiproto col. Để biết chi tiết cụ thể về cách định cấu hình plugin và các chi tiết khác dành riêng cho một giao thức cụ thể, hãy xem một trong
các ghi chú ứng

dụng sau: • AN1133: Phát triển đa giao thức động với Bluetooth và Zigbee EmberZNet SDK 6.x trở xuống • AN1209: Phát

triển đa giao thức động với Bluetooth và Kết nối

5.1 Hỗ trợ giao thức không dây

Các giao thức không dây khác nhau có các đặc điểm khác nhau đã được tận dụng với thiết kế của Đa giao thức động. Ví dụ: Bluetooth Low Energy rất
nghiêm ngặt và có thể dự đoán được lịch trình hoạt động vô tuyến của nó; khoảng thời gian quảng cáo và kết nối xảy ra tại các thời điểm đã đặt.
Ngược lại, giao thức 802.15.4 linh hoạt hơn về thời gian của nhiều sự kiện thông báo; CSMA (đa truy cập cảm nhận sóng mang) trong IEEE 802.15.4 bổ
sung các điểm dừng ngẫu nhiên để độ trễ sự kiện theo thứ tự mili giây. Điều này cho phép các thông báo IEEE 802.15.4 được gửi xung quanh các sự
kiện Bluetooth Low Energy và vẫn được nhận một cách đáng tin cậy.

Ưu tiên RAIL 5.2 802.15.4

Các giao thức 802.15.4 hiện có ba ưu tiên RAIL.

KHÔNG. Tên Cài đặt mặc định tiêu chí thoát

1 TX đang hoạt động 100 MAC ACK nhận được (hoặc không)

2 RX đang hoạt động 255 Gói được lọc hoặc MAC ACK được gửi

3 nền RX 255 Nhiệm vụ có Ưu tiên cao hơn hiện tại

Nếu Active TX được thực thi, radio sẽ được giải phóng tại thời điểm nhận được xác nhận MAC tương ứng (hoặc xảy ra thời gian chờ).

RX nền sẽ để đài ở trạng thái nhận sẵn sàng nhận tin nhắn không đồng bộ. Nếu mức độ ưu tiên của RX đang hoạt động khác với mức độ ưu tiên của RX
nền, thì mức độ ưu tiên nhận sẽ được nâng lên bất cứ khi nào một từ đồng bộ được phát hiện và chỉ được hạ xuống sau khi gói đó được lọc hoặc hoàn
thành và ACK của nó được gửi nếu một từ được yêu cầu.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 26
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai đa giao thức với ngăn xếp dựa trên 802.15.4

5.2.1 Cân bằng ưu tiên

Như đã giải thích trong phần 7.1 Ưu tiên Bluetooth, theo mặc định, phạm vi ưu tiên Bluetooth được ánh xạ vào phạm vi ưu tiên RAIL 16 - 32.
Nói chung, Bluetooth bắt đầu sử dụng mức ưu tiên thấp (32) và tự động tăng mức ưu tiên lên đến mức tối đa (16) như cần thiết nếu message
es không thành công.

Như đã mô tả trong phần trước, ngăn xếp dựa trên 802.15.4 như Zigbee hoặc Connect sử dụng các giá trị ưu tiên RAIL mặc định là 255 cho RX
nền, 255 cho RX hoạt động và 100 cho TX hoạt động.

Do các ưu tiên RAIL mặc định này, trong ứng dụng đa giao thức Bluetooth-giao thức 802.15.4, theo mặc định, lưu lượng Bluetooth sẽ luôn được
ưu tiên hơn lưu lượng giao thức 802.15.4. Đây là một lựa chọn tốt cho nhiều ứng dụng vì lưu lượng Bluetooth có các yêu cầu nghiêm ngặt về
thời gian, không giống như các giao thức 802.15.4. Tuy nhiên, nếu tải lưu lượng Bluetooth rất cao (ví dụ: gửi nhiều dữ liệu bằng cách sử
dụng khoảng thời gian kết nối rất nhỏ), thì lưu lượng giao thức 802.15.4 có thể bị chặn hoàn toàn truy cập vào đài do mức độ ưu tiên thấp
hơn và cửa sổ rất nhỏ của thời gian vô tuyến khả dụng do lưu lượng Bluetooth để lại.

Lưu ý: Thông tin sau hiện chỉ áp dụng cho ngăn xếp EmberZNet Zigbee. Silicon Labs Connect chưa có API cần thiết để thay đổi mức độ ưu tiên.

Nếu bạn đang phát triển ứng dụng đa giao thức động dựa trên 802.15.4 và điều quan trọng là lưu lượng truy cập đó phải thành công khi có lưu lượng truy
cập Bluetooth tải rất cao, thì bạn có thể điều chỉnh mức độ ưu tiên mặc định như được hiển thị trong bảng bên dưới bằng cách sử dụng API sau:

EmberStatus emberRadioSetSchedulerPriorities(const EmberMultiprotocolPriorities *priorities)

KHÔNG. Tên Cài đặt mặc định

1 TX đang hoạt động 23

2 RX đang hoạt động 24

3 nền RX 255

Do Bluetooth ban đầu đặt mức ưu tiên RAIL của nó là 32, nên các cài đặt ưu tiên 802.15.4 này sẽ cho lưu lượng 802.15.4 mức ưu tiên cao hơn
so với Bluetooth ban đầu, giúp giao thức 802.15.4 có cơ hội truyền hoặc nhận lưu lượng thành công ngay cả khi có sự hiện diện của một lưu
lượng truy cập Bluetooth rất cao. Mặt khác, Bluetooth sẽ tự động tăng mức độ ưu tiên của nó nếu nó bị chặn khỏi bộ lập lịch bởi lưu lượng
truy cập 802.15.4, lên đến mức ưu tiên cao là 16. Vì vậy, sau khi cho phép giao thức 802.15.4 truy cập vào radio ban đầu, Bluetooth sẽ mất
ưu tiên cho các lần thử lại tiếp theo nếu cần.

Cách tiếp cận này cho phép cả hai giao thức thỏa hiệp trong việc sử dụng radio của chúng mà không có giao thức nào có thể chiếm ưu thế hoàn toàn so với giao
thức kia.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 27
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai Đa giao thức với RAIL

6. Triển khai Đa giao thức với RAIL

Chương này cung cấp thêm thông tin về các đặc điểm của RAIL cho những người dùng trực tiếp sử dụng API RAIL để phát triển các giao thức sở
hữu. Cụ thể, nó cung cấp thông tin chi tiết về cách làm việc với API RAIL để xử lý các trường hợp bộ lập lịch radio cụ thể.

6.1 Ví dụ với Nhận nền, Radio năng suất và Chuyển đổi trạng thái

Các nguyên tắc cơ bản của hệ thống ưu tiên Đa giao thức RAIL khá đơn giản: một sự kiện vô tuyến có mức độ ưu tiên cao hơn (nghĩa là số lượng
nhỏ hơn) sẽ luôn chiếm ưu thế so với bất kỳ sự kiện vô tuyến nào khác có mức độ ưu tiên thấp hơn. Tuy nhiên, chủ đề này trở nên phức tạp hơn
khi xem xét các chuyển đổi trạng thái và API chẳng hạn như RAIL_StartRx(), đặt radio vào một trạng thái nhất định trong một khoảng thời gian
không xác định. Phần này cung cấp một số minh họa và ví dụ để minh họa cách xử lý các trạng thái không giới hạn thời gian này và cách lớp ứng
dụng có thể sử dụng các API chẳng hạn như RAIL_YieldRadio() để kiểm soát chúng. Các ví dụ như sau:

• Chuyển đổi trạng thái với một giao thức


duy nhất • Chuyển đổi trạng thái với hai giao thức

• Chuyển đổi trạng thái với hai giao thức và các ưu tiên tăng dần một cách đơn điệu

Trong các ví dụ này, RAIL_StartTx() là nguồn của sự kiện TX làm gián đoạn RX nền. Tuy nhiên, xin lưu ý rằng các bài kiểm tra này có thể áp
dụng cho bất kỳ API radio nào ngoại trừ RAIL_StartRx(). Nói cách khác, các ví dụ này có thể áp dụng cho bất kỳ API nào bắt đầu sự kiện radio
không phải là RX nền.

Những ví dụ này minh họa các hành vi đa giao thức dự kiến liên quan đến chuyển đổi trạng thái. Tóm lại: • Trong

quá trình chuyển đổi trạng thái, trạng thái mới được coi là phần mở rộng vô thời hạn của sự kiện ban đầu ở cùng mức độ ưu tiên đó cho đến khi
RAIL_YieldRadio() được gọi.

• Các sự kiện RX nền không bị ảnh hưởng bởi RAIL_YieldRadio(). Chỉ RAIL_Idle() mới có thể xóa vĩnh viễn một giao thức khỏi
trạng thái RX nền.

• Sự kiện có mức độ ưu tiên cao hơn sẽ luôn chiếm đoạt sự kiện có mức độ ưu tiên thấp hơn, bất kể lệnh gọi API nào

khác. • Chỉ RAIL_StartRx() nhận được mới có thể được 'trả lại' từ sự kiện có mức độ ưu tiên cao hơn thông qua RAIL_YieldRadio() hoặc

RAIL_Idle(). • Tất cả các sự kiện radio không phải RAIL_StartRx() yêu cầu RAIL_YieldRadio() để kết thúc và chuyển sang sự kiện

tiếp theo. • Không thể thay thế cuộc gọi tới RAIL_YieldRadio() bằng RAIL_Idle(). RAIL_Idle() xóa tất cả các sự kiện cho giao thức đã cho.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 28
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai Đa giao thức với RAIL

6.1.1 Chuyển đổi trạng thái với một giao thức duy nhất

Ví dụ đầu tiên này kiểm tra hành vi của radio với một giao thức duy nhất (nghĩa là, trong đó cùng một RAIL_Handle_t được sử dụng cho tất cả các lệnh
gọi chức năng radio). Đài bắt đầu trong RX với lệnh gọi ban đầu tới RAIL_StartRx(), sau đó chuyển sang TX với lệnh gọi ưu tiên cao hơn tới
RAIL_StartTx(). Điều quan trọng cần lưu ý là sau khi quá trình truyền hoàn tất, radio sẽ chuyển sang trạng thái được chỉ định bởi RAIL_SetTxTransitions()
và nó sẽ ở trạng thái vô thời hạn ở cùng mức độ ưu tiên và kênh như TX cho đến khi RAIL_YieldRadio() được gọi. Sau đó, radio trở lại RX, với kênh và
mức độ ưu tiên được chỉ định ban đầu.

Hình 6.1. Chuyển đổi trạng thái với các cuộc gọi tới RAIL_StartTx(), RAIL_StartRx(), RAIL_YieldRadio() với một giao thức duy nhất

Nhu cầu chủ động mang lại radio và do đó API RAIL_YieldRadio() phần lớn là cần thiết do ACK'ing. Triết lý thiết kế là do cả TX và ACK nhận được đều
được xem như một phần của cùng một giao dịch, nếu một nút truyền và mong đợi ACK thì nó sẽ có thể chuyển đổi sang RX và tiếp tục lắng nghe ACK như
một phần của hoạt động giống nhau (và do đó cùng mức độ ưu tiên) như TX ban đầu. Tuy nhiên, nói chung, bản thân RAIL không thể biết liệu ACK có được
yêu cầu hay không. Điều này có thể phụ thuộc vào các yếu tố khác, chẳng hạn như nội dung gói hoặc logic ứng dụng khác và do đó không thể xác định đơn
giản bằng cách kiểm tra xem ACK'ing đã được định cấu hình với RAIL_ConfigAutoAck() hay chưa . vào ứng dụng/ngăn xếp.

Trong trường hợp không cần ACK, Silicon Labs khuyên bạn nên gọi RAIL_YieldRadio() như một phần của việc xử lý sự kiện RAIL_EVENT_TX_PACKET_SENT . Làm
điều này làm cho đường màu xanh lá cây trong hình trên được giảm thiểu xuống thời gian chờ ngắt. Nếu ứng dụng mong đợi một ACK, thì RAIL_YieldRadio()
sẽ được gọi khi nhận được ACK hoặc đã hết thời gian chờ.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 29
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai Đa giao thức với RAIL

6.1.2 Chuyển đổi trạng thái với hai giao thức

Kịch bản này tương tự như kịch bản đầu tiên liên quan đến chuyển đổi trạng thái sau TX, nhưng giới thiệu một giao thức khác.

Hình 6.2. Chuyển đổi trạng thái với các cuộc gọi tới RAIL_StartTx(), RAIL_StartRx(), RAIL_YieldRadio() với hai giao thức

Trong tình huống này, điều quan trọng cần lưu ý là có thể gọi RAIL_StartRx() bất kỳ lúc nào trong quá trình giao dịch TX. Miễn là mức độ ưu tiên của
nó nhỏ hơn hoặc bằng mức độ ưu tiên của TX, RX sẽ không có hiệu lực cho đến khi ứng dụng gọi RAIL_YieldRadio() trên Giao thức A.
Khi RAIL_StartRx() được gọi trong TX, RX chỉ được thêm vào hàng sự kiện cần xử lý.

Một điểm quan trọng khác là, mặc dù RAIL_YieldRadio() trên Giao thức A sẽ chuyển đổi từ TX trên Giao thức A sang RX trên Giao thức B, nhưng cần phải
có RAIL_Idle() trên Giao thức B để chuyển đổi từ RX trên Giao thức B sang RX trên Giao thức A. Triết lý ở đây là không thể thực sự mang lại RX nền vì
sự kiện không bao giờ thực sự kết thúc. Cách duy nhất để thoát là dừng RX nền bằng lệnh gọi RAIL_Idle().

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 30
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Triển khai Đa giao thức với RAIL

6.1.3 Chuyển đổi trạng thái với hai giao thức và mức độ ưu tiên tăng dần đều

Kịch bản cuối cùng gần giống với kịch bản trước đó, ngoại trừ lệnh gọi tới RAIL_StartRx() trên Giao thức B có mức độ ưu tiên cao hơn so với lệnh
gọi tới RAIL_StartTx() trên Giao thức A.

Hình 6.3. Ví dụ về Chuyển đổi trạng thái với các lệnh gọi tới RAIL_StartTx(), RAIL_StartRx(), RAIL_YieldRadio() với hai Proto cols
và các mức độ ưu tiên khác nhau

Trong trường hợp này, do mức độ ưu tiên của RAIL_StartRx() thứ hai cao hơn mức độ ưu tiên của lệnh gọi tới RAIL_StartTx(), nên không cần gọi
tới RAIL_YieldRadio() nữa. Bởi vì RAIL_StartRx() thứ hai có mức độ ưu tiên cao hơn, nó chiếm đoạt sự kiện RAIL_StartTx() , chiếm quyền kiểm soát
radio và loại bỏ sự kiện TX khỏi trạng thái. Tại bất kỳ thời điểm nào trong RX đó trên Giao thức B, RAIL_Idle() có thể được gọi để quay lại RX
trên Giao thức A, giống như trong ví dụ trước.

Lưu ý ở đây rằng khi ứng dụng gọi RAIL_Idle() trên RX của Giao thức B, ứng dụng không quay lại Chuyển đổi TX của Pro tocol A. Thay vào đó, ứng
dụng sẽ chuyển thẳng tới RX nền, mặc dù ứng dụng chưa bao giờ gọi RAIL_Idle() trên Giao thức A của TX. Đối với các hoạt động vô tuyến đã lên
lịch (nghĩa là bất kỳ hoạt động vô tuyến nào được bắt đầu bởi một API không phải RAIL_StartRx()), sau khi một sự kiện vô tuyến bị thay thế bởi
một sự kiện có mức độ ưu tiên cao hơn, sự kiện đó sẽ bị xóa hoàn toàn và sẽ không được quay lại sau này. Chỉ nhận Nền, bắt đầu bởi RAIL_StartRx(),
mới có thể được duy trì trong nền và 'được trả về' thông qua lệnh gọi tới RAIL_YieldRadio() hoặc RAIL_Idle().

Để nhấn mạnh sự khác biệt giữa RAIL_YieldRadio() và RAIL_Idle(), điều quan trọng cần lưu ý là, đối với tất cả các ví dụ này, không thể thay thế
lệnh gọi RAIL_YieldRadio() bằng RAIL_Idle(). RAIL_Idle() xóa tất cả các sự kiện cho giao thức nhất định – cả Hoạt động nền (nghĩa là được bắt
đầu bởi RAIL_StartRx()) và Đã lên lịch (nghĩa là được bắt đầu bởi các API không phải hoạt động của RAIL_StartRx()) .
RAIL_Idle() thực sự vẫn sẽ khiến ứng dụng thoát khỏi trạng thái chuyển đổi TX, nhưng nó cũng sẽ xóa RX nền, khiến ứng dụng trở lại trạng thái
không hoạt động chứ không phải RX.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 31
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Thực hiện đa giao thức với Bluetooth

7. Triển khai Đa giao thức với Bluetooth

Để biết chi tiết về cách triển khai ví dụ đa giao thức/công tắc đèn/đèn Bluetooth của RAIL và để biết thêm thông tin về cách phát triển ứng dụng đa giao thức
với giao thức của riêng bạn trên RAIL, hãy xem AN1134 : Phát triển đa giao thức động với Bluetooth và các giao thức sở hữu riêng trên RAIL.

7.1 Ưu tiên Bluetooth

Trái ngược với Zigbee với các ưu tiên được xác định tĩnh cho các loại hoạt động khác nhau, Bluetooth sử dụng cách tiếp cận phạm vi và độ lệch để đánh dấu tất
cả các tác vụ vào một khu vực nhất định của phổ ưu tiên.

Hình 7.1. Ánh xạ Phạm vi ưu tiên Bluetooth sang Phạm vi ưu tiên RAIL

Trong ví dụ này, phạm vi ưu tiên Bluetooth, chính nó kéo dài từ 0 đến 255, được ánh xạ tới một phần giới hạn của không gian ưu tiên RAIL được chia sẻ.

Không giống như Zigbee, Bluetooth có các yêu cầu về thời gian nghiêm ngặt hơn nhiều, trong đó việc thiếu một khe nhất định có thể dẫn đến kết thúc kết nối.
Ngoài ra, Bluetooth có một loạt các tác vụ khác nhau như (có thể là nhiều) kết nối, quảng cáo và quét.

Bảng 7.1. Các ưu tiên khác nhau trong Bluetooth

KHÔNG. Tên Cài đặt mặc định tiêu chí thoát

1 Sự liên quan 135 đến 0 Sự kiện kết nối kết thúc

2 Bắt đầu kết nối 55 đến 15 Cửa sổ bắt đầu kết thúc

3 Quảng cáo 175 đến 127 Sự kiện Quảng cáo Kết thúc

4 Máy quét 191 đến 143 Kết thúc cửa sổ quét

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 32
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Thực hiện đa giao thức với Bluetooth

Để xử lý việc này, bộ lập lịch Bluetooth, có mức độ ưu tiên được ánh xạ tới bộ lập lịch radio RAIL, sẽ tính đến các tham số sau cho từng tác vụ: 1. Thời
gian bắt đầu

2. Thời gian tối thiểu

3. Thời gian tối đa

4. Ưu tiên

Hình 7.2. Tác vụ Bluetooth

Nếu thời gian bắt đầu được di chuyển, tổng thời gian chạy sẽ giảm tương ứng, nghĩa là độ chùng được giảm. Ngoài ra các ưu tiên có thể được điều chỉnh linh
hoạt.

7.1.1 Kết nối

Các kết nối có mức độ ưu tiên tương đối cao. Không thể di chuyển thời gian bắt đầu kết nối.

Bộ lập lịch Bluetooth tự động tăng mức độ ưu tiên khi kết nối càng gần với thời gian chờ giám sát và đạt đến mức độ ưu tiên tối đa gần với mức độ ưu tiên
đó. Gói TX trong hàng đợi TX cũng làm tăng mức độ ưu tiên của kết nối.

7.1.2 Bắt đầu kết nối

Bắt đầu kết nối quét quảng cáo từ thiết bị đích để thiết lập kết nối. Nó có mức độ ưu tiên cao hơn so với máy quét để cho phép thiết lập kết nối mạnh mẽ hơn.

7.1.3 Quảng cáo

Quảng cáo theo mặc định có mức độ ưu tiên thấp hơn và điểm bắt đầu của chúng có thể được di chuyển. Thời gian bắt đầu và Thời gian tối đa được xác định bởi
khoảng thời gian quảng cáo.

Nếu không thể gửi quảng cáo, mức độ ưu tiên của quảng cáo sẽ tăng chậm và được đặt lại sau khi quảng cáo được gửi thành công.

7.1.4 Máy quét

Theo mặc định, các tác vụ này có mức ưu tiên thấp nhất. Thời gian bắt đầu, tối thiểu và tối đa được xác định bởi khoảng thời gian quét và kích thước cửa sổ.
Quá trình quét có thể tiếp tục ngay cả khi bị gián đoạn bởi tác vụ ưu tiên cao hơn. Nếu điều này xảy ra, thời gian quét được tích lũy để đảm bảo đạt được
kích thước cửa sổ quét mong muốn ở mỗi khoảng thời gian quét.

Như với quảng cáo, mức độ ưu tiên được tăng lên trong trường hợp không thể đáp ứng khoảng thời gian quét mong muốn hoặc kích thước cửa sổ trước đó. Nó được đặt lại
về mức ưu tiên ban đầu sau khi khoảng thời gian quét hoặc kích thước cửa sổ đã được đáp ứng.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 33
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Thực hiện đa giao thức với Bluetooth

7.2 Ví dụ về Hoạt động của Bộ lập lịch Bluetooth

Ví dụ này minh họa cách bộ lập lịch trình Bluetooth sẽ lên lịch trình cho ba tác vụ kết nối và một tác vụ quảng cáo, mỗi tác vụ có mức độ
ưu tiên khác nhau. Trong các hình sau đây, phần màu xám biểu thị thời gian chạy tối thiểu mà một tác vụ yêu cầu và phần màu xanh biểu thị
thời gian chạy tối đa mà tác vụ có thể sử dụng và, nếu linh hoạt, vùng có thể di chuyển tác vụ. Hình dưới đây cho thấy trong thiết lập
ban đầu.

Hình 7.3. Lập lịch tác vụ Ví dụ: Thiết lập

Như được hiển thị bên dưới Conn1 là tác vụ đầu tiên chạy vì nó không trùng lặp với bất kỳ tác vụ ưu tiên cao hơn nào.

Hình 7.4. Ví dụ lập lịch tác vụ: Bước 1

Adv1 trùng lặp với Conn2 có mức độ ưu tiên cao hơn. Adv1 linh hoạt và do đó được chuyển vào như minh họa trong hình dưới đây.

Hình 7.5. Ví dụ lập lịch tác vụ: Bước 2

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 34
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Thực hiện đa giao thức với Bluetooth

Conn2 trùng lặp với nhiệm vụ ưu tiên cao hơn Conn4. Vì Conn2 không linh hoạt nên việc lên lịch cho Conn2 không thành công.

Hình 7.6. Ví dụ lập lịch tác vụ: Bước thứ 3

Conn4 không trùng lặp với các tác vụ khác, do đó kết thúc Conn1 được điều chỉnh để dừng trước khi Conn4 bắt đầu.

Hình 7.7. Ví dụ lập lịch tác vụ: Bước thứ 4

Cuối cùng Adv1 được chạy. Conn4 được điều chỉnh để kết thúc trước khi Adv1 bắt đầu

Hình 7.8. Ví dụ lập lịch tác vụ: Bước thứ 4

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 35
UG305: Hướng dẫn sử dụng đa giao thức động
Machine Translated by Google
Thực hiện đa giao thức với Bluetooth

7.3 Sửa đổi ưu tiên

Cấu trúc "sl_bt_configuration_t" (v3.x)/"gecko_configuration_t" (v2.x) chứa trường "bluetooth.linklayer_priorities" là con trỏ tới cấu hình
ưu tiên. Nếu con trỏ là NULL thì ngăn xếp sẽ sử dụng các ưu tiên mặc định của nó như được liệt kê trong phần 7.1 Ưu tiên Bluetooth ở trên cũng
như trong phần này.

Trong trường hợp con trỏ không phải là null, nó phải trỏ đến cấu trúc của các cài đặt ưu tiên như được định nghĩa bên dưới:

cấu trúc
typedef{ uint8_t
scan_min, uint8_t
scan_max, uint8_t
adv_min, uint8_t
adv_max, uint8_t
conn_min, uint8_t
conn_max, uint8_t
init_min, uint8_t
init_max, uint8_t ngưỡng_coex,
uint8_t rail_mapping_offset, uint8_t
rail_mapping_range, }geckopriorities;

Các tham số scan_min, can_max, adv_min, adv_max, conn_min, conn_max, init_min và init_max lần lượt xác định mức độ ưu tiên tối thiểu và tối đa cho quá
trình quét, quảng cáo, kết nối và khởi tạo. Các ưu tiên sẽ di chuyển giữa các ranh giới tối thiểu và tối đa như được mô tả trong phần 7.1.1 Kết nối với
7.1.4 Trình quét ở trên.

Tham số ngưỡng_coex (mặc định là 175) được sử dụng để xác định ngưỡng ưu tiên mà trên ngưỡng đó thiết bị sẽ kích hoạt các GPIO tương ứng được
xác nhận (nếu được định cấu hình) để cho biết yêu cầu của thiết bị để chiếm dải tần. Tham khảo AN1028: Bluetooth cùng tồn tại với Wi-Fi để
biết thêm chi tiết về quản lý cùng tồn tại đối với các thiết lập thường bao gồm sự kết hợp giữa mạng WLAN và radio BLE/Mesh.

Cuối cùng, các tham số rail_mapping_offset và rail_mapping_range xác định cách các ưu tiên của lớp liên kết Bluetooth được ánh xạ tới các ưu
tiên của bộ lập lịch trình vô tuyến RAIL toàn cầu. Có thể xem ánh xạ của các giá trị này trong 7.1 Ưu tiên Bluetooth.

Hiện tại (kể từ Gecko SDK phiên bản 2.2), giá trị mặc định cho cả rail_mapping_offset và rail_mapping_range là 16.

silabs.com | Xây dựng một thế giới kết nối hơn. Phiên bản 1.1 | 36
Machine Translated by Google

Thông minh. Đã kết nối.

Thân thiện với năng lượng.

Danh mục IoT Chất Hỗ trợ & Cộng đồng


www.silabs.com/products lượng www.silabs.com/quality www.silabs.com/community

từ chối trách nhiệm

Phòng thí nghiệm Silicon dự định cung cấp cho khách hàng tài liệu chuyên sâu, chính xác và mới nhất về tất cả các thiết bị ngoại vi và mô-đun có sẵn cho những người cố vấn triển khai hệ thống
và phần mềm đang sử dụng hoặc có ý định sử dụng các sản phẩm của Phòng thí nghiệm Silicon. Dữ liệu mô tả đặc điểm, các mô-đun và thiết bị ngoại vi có sẵn, kích thước bộ nhớ và địa chỉ bộ nhớ
đề cập đến từng thiết bị cụ thể và các thông số “Điển hình” được cung cấp có thể và thực sự khác nhau trong các ứng dụng khác nhau. Các ví dụ ứng dụng được mô tả ở đây chỉ nhằm mục đích minh
họa. Silicon Labs có quyền thực hiện các thay đổi mà không cần thông báo thêm đối với thông tin sản phẩm, thông số kỹ thuật và mô tả ở đây và không đưa ra bảo đảm về tính chính xác hoặc tính
đầy đủ của thông tin được bao gồm. Không cần thông báo trước, Silicon Labs có thể cập nhật chương trình cơ sở của sản phẩm trong quá trình sản xuất vì lý do bảo mật hoặc độ tin cậy. Những thay
đổi như vậy sẽ không làm thay đổi thông số kỹ thuật hoặc hiệu suất của sản phẩm. Silicon Labs sẽ không chịu trách nhiệm về hậu quả của việc sử dụng thông tin được cung cấp trong tài liệu này.
Tài liệu này không ngụ ý hoặc cấp rõ ràng bất kỳ giấy phép nào để thiết kế hoặc chế tạo bất kỳ mạch tích hợp nào. Các sản phẩm không được thiết kế hoặc cho phép sử dụng trong bất kỳ thiết bị
Cấp III nào của FDA, các ứng dụng cần có sự chấp thuận trước khi tiếp thị của FDA hoặc Hệ thống Hỗ trợ Sự sống mà không có sự đồng ý cụ thể bằng văn bản của Phòng thí nghiệm Silicon. “Hệ thống
hỗ trợ sự sống” là bất kỳ sản phẩm hoặc hệ thống nào nhằm hỗ trợ hoặc duy trì sự sống và/hoặc sức khỏe, nếu không thành công, có thể dẫn đến thương tích cá nhân nghiêm trọng hoặc tử vong. Các
sản phẩm của Silicon Labs không được thiết kế hoặc ủy quyền cho các ứng dụng quân sự. Trong mọi trường hợp, các sản phẩm của Silicon Labs sẽ không được sử dụng làm vũ khí hủy diệt hàng loạt
bao gồm (nhưng không giới hạn ở) vũ khí hạt nhân, sinh học hoặc hóa học hoặc tên lửa có khả năng mang những vũ khí đó. Phòng thí nghiệm Silicon từ chối tất cả các bảo đảm rõ ràng và ngụ ý và
sẽ không chịu trách nhiệm hoặc trách nhiệm pháp lý đối với bất kỳ thương tích hoặc thiệt hại nào liên quan đến việc sử dụng sản phẩm của Phòng thí nghiệm Silicon trong các ứng dụng trái phép như vậy.
Lưu ý: Nội dung này có thể chứa thuật ngữ xúc phạm hiện đã lỗi thời. Silicon Labs đang thay thế các điều khoản này bằng ngôn ngữ bao gồm bất cứ khi nào có thể. Để biết thêm thông tin, hãy truy
cập www.silabs.com/about-us/inclusive-lexicon-project

Thông tin nhãn hiệu

Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® và logo Silicon Labs®, Bluegiga®, Bluegiga Logo®, EFM®, EFM32®, EFR, Ember®, Energy Micro, Energy Micro logo và sự kết
hợp của chúng , “bộ vi điều khiển thân thiện với năng lượng nhất thế giới”, Redpine Signals®, WiSeConnect , n-Link, ThreadArch®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, Gecko OS, Gecko OS
Studio, Precision32®, Simplicity Studio®, Telegesis , Telegesis Logo®, USBXpress® , Zentri, logo Zentri và Zentri DMS, Z-Wave® và các nhãn hiệu khác là nhãn hiệu hoặc nhãn hiệu đã đăng ký của
Silicon Labs. ARM, CORTEX, Cortex-M3 và THUMB là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của ARM Holdings. Keil là nhãn hiệu đã đăng ký của ARM Limited. Wi-Fi là nhãn hiệu đã đăng ký của Wi-Fi
Alliance. Tất cả các sản phẩm hoặc tên thương hiệu khác được đề cập ở đây là thương hiệu của chủ sở hữu tương ứng.

Phòng thí nghiệm Silicon Inc.


400 Tây Cesar Chavez
Austin, TX 78701
Hoa Kỳ

www.silabs.com

You might also like