AN451
TRIỂN KHAI PHẦN MỀM M-BUS KHÔNG DÂY
Giới thiệu
Ghi chú ứng dụng này mô tả việc triển khai Silicon Labs của M-Bus không dây bằng cách sử dụng Silicon Labs C8051 MCU và EZRadioPRO®. M-bus không dây là Tiêu chuẩn Châu Âu cho các ứng dụng đọc đồng hồ sử dụng băng tần 868 MHz.
Lớp ngăn xếp
M-Bus không dây sử dụng mô hình IEC 3 lớp, là một tập hợp con của mô hình OSI 7 lớp (xem Hình 1).
Lớp Vật lý (PHY) được định nghĩa trong EN 13757-4. Lớp vật lý xác định cách các bit được mã hóa và truyền đi, các đặc tính của modem RF (tốc độ chip, phần mở đầu và từ đồng bộ hóa) và các thông số RF (điều chế, tần số trung tâm và độ lệch tần số).
Lớp PHY được thực hiện bằng cách sử dụng kết hợp phần cứng và phần sụn. EZRadioPRO thực hiện tất cả các chức năng RF và modem. EZRadioPRO được sử dụng trong chế độ FIFO với trình xử lý gói. Mô-đun MbusPhy.c cung cấp giao diện SPI, mã hóa / giải mã, đọc / ghi khối, xử lý gói và quản lý các trạng thái của bộ thu phát.
Lớp liên kết M-Bus Data được thực hiện trong mô-đun MbusLink.c. Giao diện Lập trình Ứng dụng M-Bus bao gồm các chức năng chung có thể được gọi từ lớp ứng dụng trong luồng chính. Mô-đun MbusLink cũng triển khai Lớp liên kết dữ liệu. Lớp liên kết Dữ liệu sẽ định dạng và sao chép dữ liệu từ bộ đệm TX của ứng dụng sang bộ đệm MbusPhy TX, thêm các tiêu đề và CRC bắt buộc.
Bản thân lớp Ứng dụng không phải là một phần của phần sụn M-bus. Lớp ứng dụng xác định cách định dạng nhiều loại dữ liệu để truyền. Hầu hết các máy đo chỉ cần truyền một hoặc hai loại dữ liệu. Việc thêm một lượng lớn mã để chứa bất kỳ loại dữ liệu nào vào đồng hồ sẽ thêm mã và chi phí không cần thiết cho đồng hồ. Có thể khả thi để triển khai một thư viện hoặc một tiêu đề file với danh sách đầy đủ các kiểu dữ liệu. Tuy nhiên, hầu hết khách hàng đo lường đều biết chính xác loại dữ liệu họ cần truyền và có thể tham khảo tiêu chuẩn để định dạng chi tiết. Một trình đọc hoặc trình đánh giá đa năng có thể triển khai một tập hợp đầy đủ các kiểu dữ liệu ứng dụng trên PC GUI. Vì những lý do này, lớp ứng dụng được triển khai bằng cách sử dụng exampứng dụng le cho một máy đo và đầu đọc.
Tiêu chuẩn bắt buộc
- Tiêu chuẩn EN 13757-4
Tiêu chuẩn EN 13757-4
Hệ thống thông tin liên lạc cho công tơ và đọc công tơ từ xa
Phần 4: Đọc đồng hồ đo không dây
Đọc máy đo bức xạ để hoạt động trong băng tần SRD 868 MHz đến 870 MHz - Tiêu chuẩn EN 13757-3
Hệ thống thông tin liên lạc cho công tơ và đọc công tơ từ xa
Phần 3: Lớp ứng dụng chuyên dụng - Tiêu chuẩn IEC 60870-2-1:1992
Thiết bị và hệ thống điều khiển từ xa
Phần 5: Giao thức truyền tải
Phần 1: Quy trình truyền liên kết - Tiêu chuẩn IEC 60870-1-1:1990
Thiết bị và hệ thống điều khiển từ xa
Phần 5: Giao thức truyền tải
Phần 1: Các định dạng khung truyền
Định nghĩa
- Xe buýt M—M-Bus là một tiêu chuẩn có dây để đọc đồng hồ ở Châu Âu.
- M-Bus không dây—M-Bus không dây cho các ứng dụng đọc đồng hồ ở Châu Âu.
- VẬT LÝ—Lớp vật lý xác định cách các bit và byte dữ liệu được mã hóa và truyền đi.
- API—Giao diện Lập trình ứng dụng.
- LIÊN KẾT—Lớp liên kết dữ liệu xác định cách các khối và khung được truyền.
- CRC—Kiểm tra dự phòng theo chu kỳ.
- FSK—Tần số chuyển keying.
- Chip-Đơn vị nhỏ nhất của dữ liệu được truyền. Một bit dữ liệu được mã hóa thành nhiều chip.
- Mô-đun—Nguồn mã AC .c file.
M-Bus PHY Mô tả chức năng
Mở đầu trình tự
Dãy mở đầu được chỉ định bởi đặc điểm kỹ thuật bus M là một số nguyên xen kẽ các số không và số một. Một số được định nghĩa là tần số cao hơn và số không được xác định là tần số thấp hơn.
nx (01)
Các tùy chọn Mở đầu cho Si443x là một số nguyên các nibbles bao gồm các số không và các ô xen kẽ.
nx (1010)
Phần mở đầu có thêm phần mở đầu sẽ không thành vấn đề, nhưng khi đó, từ đồng bộ hóa và trọng tải sẽ bị lệch một chút.
Giải pháp là đảo ngược toàn bộ gói bằng cách đặt bit động cơ trong thanh ghi Điều khiển điều chế 2 (0x71). Điều này sẽ đảo ngược phần mở đầu, từ đồng bộ và dữ liệu TX / RX. Do đó, dữ liệu phải được đảo ngược khi ghi dữ liệu TX hoặc đọc dữ liệu RX. Ngoài ra, từ đồng bộ hóa được đảo ngược trước khi ghi vào thanh ghi Từ đồng bộ hóa Si443x.
Đồng bộ hóa Word
Từ đồng bộ hóa theo yêu cầu của EN-13757-4 là 18 chip cho Chế độ S và Chế độ R hoặc 10 chip cho Kiểu T. Từ đồng bộ hóa cho Si443x là 1 đến 4 byte. Tuy nhiên, vì từ đồng bộ hóa luôn đứng trước phần mở đầu, sáu bit cuối cùng của phần mở đầu có thể được coi là một phần của từ đồng bộ hóa; vì vậy, từ đồng bộ hóa đầu tiên được đệm bởi ba lần lặp lại của một số 443, sau đó là một từ. Từ đồng bộ hóa được bổ sung trước khi ghi vào thanh ghi SiXNUMXx.
Bảng 1. Đồng bộ hóa Word cho Chế độ S và Chế độ R
Tiêu chuẩn EN 13757-4 | 00 | 01110110 | 10010110 | nhị phân |
00 | 76 | 96 | hex | |
pad với (01) x 3 | 01010100 | 01110110 | 10010110 | nhị phân |
54 | 76 | 96 | hex | |
bổ sung | 10101011 | 10001001 | 01101001 | nhị phân |
AB | 89 | 69 | hex |
Bảng 2. Đồng bộ hóa Word for Mode T Meter sang Other
ĐỒNG BỘ | ĐỒNG BỘ | ĐỒNG BỘ |
TỪ | TỪ | TỪ |
3 | 2 | 1 |
Độ dài phần mở đầu truyền
Phần mở đầu tối thiểu được chỉ định cho bốn chế độ hoạt động khác nhau. Có thể chấp nhận được phần mở đầu dài hơn quy định. Trừ sáu chip cho phần mở đầu sẽ cho số chip tối thiểu cho phần mở đầu Si443x. Việc triển khai bổ sung thêm hai ngòi mở đầu trong tất cả các chế độ mở đầu ngắn để cải thiện khả năng phát hiện và tương tác của phần mở đầu. Phần mở đầu trên Chế độ S có phần mở đầu dài rất dài; vì vậy, phần mở đầu tối thiểu được sử dụng. Độ dài mở đầu bằng nibbles được ghi vào thanh ghi Độ dài mở đầu (0x34). Thanh ghi độ dài phần mở đầu chỉ xác định phần mở đầu khi truyền. Thông số kỹ thuật tối thiểu và cài đặt độ dài phần mở đầu được tóm tắt trong Bảng 3.
Bảng 3. Độ dài phần mở đầu truyền
EN-13757-4 tối thiểu |
Si443x Lời mở đầu Đặt ing |
Đồng bộ Từ |
Tổng cộng | thêm | |||
nx (01) | khoai tây chiên | cắn nhẹ | khoai tây chiên | khoai tây chiên | khoai tây chiên | khoai tây chiên | |
Phần mở đầu ngắn của Chế độ S | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Phần mở đầu dài của Chế độ S | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Chế độ T (mét-khác) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Chế độ R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
Phần mở đầu tối thiểu để tiếp nhận được xác định bởi thanh ghi Điều khiển phát hiện mở đầu (0x35). Khi nhận, số lượng bit trong từ đồng bộ phải được trừ khỏi phần mở đầu tối thiểu được chỉ định để xác định phần mở đầu có thể sử dụng được. Thời gian giải quyết tối thiểu của máy thu là 16 chip nếu AFC được bật hoặc 8 chip nếu AFC bị tắt. Thời gian giải quyết của máy thu cũng được trừ khỏi phần mở đầu có thể sử dụng để xác định cài đặt tối thiểu cho thanh ghi Điều khiển phát hiện mở đầu.
Xác suất của lời mở đầu sai phụ thuộc vào cài đặt của thanh ghi Điều khiển phát hiện mở đầu. Một cài đặt ngắn của 8 chip có thể dẫn đến việc phát hiện một đoạn mở đầu sai sau vài giây. Cài đặt 20chips được khuyến nghị làm cho việc phát hiện phần mở đầu sai trở thành một trường hợp không thể xảy ra. Độ dài phần mở đầu cho Chế độ R và Chế độ SL đủ dài để sử dụng cài đặt khuyến nghị.
Có rất ít lợi ích khi làm cho phần mở đầu phát hiện lâu hơn 20 chip.
AFC bị tắt đối với Model S có phần mở đầu ngắn và Model T. Điều này làm giảm thời gian xử lý của bộ thu và cho phép cài đặt phát hiện phần mở đầu dài hơn. Khi AFC bị vô hiệu hóa, Chế độ T có thể sử dụng cài đặt được khuyến nghị là 20 chip. Cài đặt 4 nibbles hoặc 20 chip được sử dụng cho Model S với phần mở đầu ngắn. Điều này làm cho xác suất phát hiện phần mở đầu sai đối với mô hình này cao hơn một chút.
Bảng 4. Phát hiện mở đầu
EN-13757-4 tối thiểu |
Đồng bộ Từ |
có thể sử dụng lời mở đầu |
Giải quyết RX | Phát hiện phút |
Si443x Lời mở đầu Cài đặt phát hiện |
|||
nx (01) | khoai tây chiên | khoai tây chiên | khoai tây chiên | khoai tây chiên | khoai tây chiên | cắn nhẹ | khoai tây chiên | |
Phần mở đầu ngắn của Chế độ S | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Phần mở đầu dài của Model S | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Mô hình T (mét-khác) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Chế độ R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Ghi chú: AFC bị vô hiệu hóa |
Bộ thu được định cấu hình để tương tác với bộ phát bằng cách sử dụng phần mở đầu được chỉ định tối thiểu. Điều này đảm bảo máy thu sẽ tương thích với bất kỳ máy phát nào tuân thủ M-bus.
Thông số kỹ thuật M-Bus không dây yêu cầu phần mở đầu rất dài cho Chế độ S1 của ít nhất 558 chip. Quá trình này sẽ mất khoảng 17 ms chỉ để truyền phần mở đầu. Si443x không yêu cầu phần mở đầu dài như vậy và không được hưởng lợi từ phần mở đầu dài. Mặc dù phần mở đầu dài được coi là tùy chọn cho Chế độ S2, không có lý do gì để sử dụng phần mở đầu dài với Si443x. Nếu muốn giao tiếp một chiều, Chế độ T1 sẽ cung cấp phần mở đầu ngắn hơn, tốc độ dữ liệu cao hơn và thời lượng pin dài hơn. Nếu cần giao tiếp hai chiều bằng Chế độ S2, bạn nên sử dụng phần mở đầu ngắn.
Lưu ý rằng ngưỡng phát hiện cho Model S có phần mở đầu dài hơn số lượng ngòi mở đầu được truyền cho Model S có phần mở đầu ngắn. Điều này có nghĩa là bộ thu Chế độ S có đoạn mở đầu dài sẽ không phát hiện ra đoạn mở đầu từ bộ phát Chế độ S có đoạn mở đầu ngắn. Điều này là cần thiết nếu bộ thu Chế độ S có phần mở đầu dài muốn nhận được bất kỳ lợi ích nào từ phần mở đầu dài.
Lưu ý rằng bộ thu Chế độ S phần mở đầu ngắn sẽ phát hiện phần mở đầu và nhận các gói từ cả phần mở đầu ngắn Chế độ S
máy phát và một máy phát Mode S có lời mở đầu dài; vì vậy, nói chung, đầu đọc đồng hồ nên sử dụng cấu hình máy thu Chế độ S có phần mở đầu ngắn.
Mã hóa/Giải mã
Đặc điểm kỹ thuật không dây M-bus yêu cầu hai phương pháp mã hóa khác nhau. Mã hóa Manchester được sử dụng cho Chế độ S và Chế độ R. Mã hóa Manchester cũng được sử dụng cho liên kết khác-mét trong Mô hình T. Liên kết mét-to-khác Model T sử dụng 3 trong số 6 mã hóa.
1. Manchester được mã hóa / giải mã
Mã hóa Manchester trong lịch sử phổ biến trong các hệ thống RF để cung cấp khả năng phục hồi và theo dõi xung nhịp mạnh mẽ bằng cách sử dụng một modem đơn giản và rẻ tiền. Tuy nhiên, một đài phát thanh hiệu suất cao hiện đại như Si443x không cần mã hóa Manchester. Mã hóa Manchester được hỗ trợ chủ yếu để tương thích với các tiêu chuẩn hiện có, nhưng tốc độ dữ liệu cho Si443x được tăng gấp đôi một cách hiệu quả khi không sử dụng mã hóa Manchester.
Si443x hỗ trợ mã hóa Manchester và giải mã toàn bộ gói tin trong phần cứng. Thật không may, từ đồng bộ hóa không được mã hóa Manchester. Một chuỗi Manchester không hợp lệ đã được cố ý chọn cho từ đồng bộ hóa. Điều này làm cho mã hóa Manchester không tương thích với hầu hết các bộ đàm hiện có, bao gồm cả Si443x. Do đó, mã hóa và giải mã Manchester phải được thực hiện bởi MCU. Mỗi byte trên dữ liệu chưa được mã hóa bao gồm tám bit dữ liệu. Sử dụng mã hóa Manchester, mỗi bit dữ liệu được mã hóa thành một ký hiệu hai chip. Vì dữ liệu được mã hóa phải được ghi vào tám chip FIFO vô tuyến cùng một lúc, nên một phần dữ liệu được mã hóa và ghi vào FIFO tại một thời điểm.
Bảng 5. Mã hóa Manchester
dữ liệu | Sửu12 | 0x34 | byte | ||
Sửu1 | 0x2 | 0x3 | 0x4 | cắn nhẹ | |
1 | 10 | 11 | 100 | nhị phân | |
con chip | 10101001 | 10100110 | 10100101 | 10011010 | nhị phân |
FIFO | SửuA9 | SửuA6 | SửuA5 | Sửu9A | hex |
Mỗi byte được truyền sẽ được chuyển một byte tại một thời điểm đến hàm byte mã hóa. Hàm byte mã hóa sẽ gọi hàm nibble mã hóa hai lần, đầu tiên là nibble quan trọng nhất và sau đó là nibble ít quan trọng nhất.
Mã hóa Manchester trong phần mềm không khó. Bắt đầu từ bit quan trọng nhất, một bit được mã hóa dưới dạng chuỗi chip “01”. Số 10 được mã hóa dưới dạng chuỗi chip “16”. Điều này có thể dễ dàng thực hiện bằng cách sử dụng một vòng lặp và dịch chuyển hai bit cho mỗi ký hiệu. Tuy nhiên, sẽ nhanh hơn nếu chỉ sử dụng một bảng tra cứu XNUMX mục nhập đơn giản cho mỗi nibble. Hàm encode Manchester nibble mã hóa một nibble dữ liệu sau đó ghi nó vào FIFO. Các chip được đảo ngược trước khi ghi vào FIFO để tính cho các yêu cầu của phần mở đầu được đảo ngược.
Khi nhận, mỗi byte trong FIFO bao gồm tám chip và được giải mã thành một nibble dữ liệu. Hàm khối đọc đọc từng byte một từ FIFO và gọi hàm byte giải mã. Các chip được đảo ngược sau khi đọc từ FIFO để tính đến các yêu cầu của phần mở đầu đảo ngược. Mỗi byte của chip mã hóa Manchester được giải mã thành một nibble dữ liệu. Nibble đã giải mã được ghi vào bộ đệm RX bằng cách sử dụng chức năng bộ đệm RX nibble ghi.
Lưu ý rằng cả mã hóa và giải mã đều được thực hiện từng lần một dữ liệu một cách nhanh chóng. Mã hóa vào một bộ đệm sẽ yêu cầu một bộ đệm bổ sung gấp đôi kích thước của dữ liệu chưa được mã hóa. Mã hóa và giải mã nhanh hơn nhiều so với tốc độ dữ liệu được hỗ trợ nhanh nhất (100 k chip mỗi giây). Vì Si443x hỗ trợ đọc và ghi nhiều byte vào FIFO, có một chi phí nhỏ trong việc chỉ sử dụng đọc và ghi một byte. Chi phí khoảng 10 µs cho 100 chip được mã hóa. Lợi ích là tiết kiệm RAM 512 byte.
2. Ba trong số sáu giải mã mã hóa
Phương pháp mã hóa Three-out-of-Six được chỉ định trong EN-13757-4 cũng được triển khai trong phần sụn trên MCU. Mã hóa này được sử dụng cho Chế độ T tốc độ cao (100 k chip mỗi giây) từ mét này sang mét khác. Model T cung cấp thời gian truyền ngắn nhất và tuổi thọ pin dài nhất cho đồng hồ đo không dây.
Mỗi byte dữ liệu được truyền đi được chia thành hai nibbles. Nibble quan trọng nhất được mã hóa và truyền đi đầu tiên. Một lần nữa, điều này được thực hiện bằng cách sử dụng một hàm byte mã hóa gọi hàm nibble mã hóa hai lần.
Mỗi nibble dữ liệu được mã hóa thành một ký hiệu sáu chip. Chuỗi ký hiệu sáu chip phải được ghi vào FIFO 8chip.
Trong quá trình mã hóa, hai byte dữ liệu được mã hóa thành bốn nibbles. Mỗi ngòi là một ký hiệu 6 chip. Bốn biểu tượng 6chip được tổng hợp thành ba byte.
Bảng 6. Ba trong sáu mã hóa
dữ liệu | 0x12 | 0x34 | byte | ||||
Sửu1 | 0x2 | 0x3 | 0x4 | cắn nhẹ | |||
con chip | 15 | 16 | 13 | 34 | bát phân | ||
1101 | 1110 | 1011 | 11100 | nhị phân | |||
FIFO | 110100 | 11100010 | 11011100 | nhị phân | |||
0x34 | OxE2 | OxDC | hex |
Trong phần mềm, mã hóa ba trong sáu được thực hiện bằng cách sử dụng ba hàm lồng nhau. Hàm mã hóa byte sẽ gọi hàm nibble mã hóa hai lần. Hàm nibble mã hóa sử dụng một bảng tra cứu ký hiệu sáu chip và ghi ký hiệu vào Shift Three trong Six chức năng. Chức năng này thực hiện một thanh ghi dịch chuyển 16 chip trong phần mềm. Ký hiệu được ghi vào byte nhỏ nhất của thanh ghi shift. Thanh ghi được chuyển sang trái hai lần. Điều này được lặp lại ba lần. Khi một byte hoàn chỉnh có trong byte trên của thanh ghi shift, nó sẽ được đảo ngược và ghi vào FIFO.
Vì mỗi byte dữ liệu được mã hóa dưới dạng một byte rưỡi được mã hóa, điều quan trọng là phải xóa thanh ghi dịch chuyển ban đầu để byte được mã hóa đầu tiên là chính xác. Nếu độ dài gói là một số lẻ, sau khi mã hóa tất cả các byte, sẽ vẫn còn một nibble trong thanh ghi shift. Điều này được xử lý với postamble như được giải thích trong phần tiếp theo.
Giải mã ba trong sáu mã được mã hóa là quy trình ngược lại. Khi giải mã, ba byte mã hóa được giải mã thành hai byte dữ liệu. Thanh ghi dịch chuyển phần mềm một lần nữa được sử dụng để tổng hợp các byte dữ liệu đã được giải mã. Bảng tra cứu nghịch đảo 64 mục nhập được sử dụng để giải mã. Điều này sử dụng ít chu kỳ hơn nhưng nhiều bộ nhớ mã hơn. Tìm kiếm trong bảng tra cứu 16 mục nhập cho ký hiệu tương ứng mất nhiều thời gian hơn.
Hậu kỳ
Thông số kỹ thuật M-bus không dây có các yêu cầu cụ thể đối với postamble hoặc trailer. Đối với tất cả các chế độ, tối thiểu là hai chip và tối đa là tám chip. Vì đơn vị nguyên tử tối thiểu cho FIFO là một byte, một đoạn giới thiệu 8 chip được sử dụng cho Chế độ S và Chế độ R. Bài đăng Mode T là tám chip nếu độ dài gói là chẵn hoặc bốn chip nếu độ dài gói là lẻ. Bộ postamble bốn chip cho độ dài gói lẻ đáp ứng yêu cầu có ít nhất hai chip xen kẽ.
Bảng 7. Độ dài dấu gạch ngang
Chiều dài Postamble (chip) | |||||
phút | tối đa | Thực hiện | chuỗi chip | ||
Chế độ S | 2 | 8 | 8 | 1010101 | |
Chế độ T | 2 | 8 | 4 | (số lẻ) | 101 |
8 | (thậm chí) | 1010101 | |||
Chế độ R | 2 | 8 | 8 | 1010101 |
Trình xử lý gói
Trình xử lý gói trên Si443x có thể được sử dụng trong chế độ độ rộng gói thay đổi hoặc chế độ độ rộng gói cố định. Chế độ độ rộng gói thay đổi yêu cầu byte độ dài gói sau từ đồng bộ hóa và byte tiêu đề tùy chọn. Khi nhận được, Radio sẽ sử dụng byte độ dài để xác định điểm kết thúc của một gói tin hợp lệ. Khi truyền, radio sẽ chèn trường độ dài sau byte tiêu đề.
Không thể sử dụng trường L cho giao thức M-bus không dây cho trường độ dài Si443x. Đầu tiên, trường L không phải là độ dài thực của gói tin. Đây là số byte trọng tải của lớp liên kết không bao gồm byte hoặc mã hóa CRC. Thứ hai, bản thân trường L được mã hóa bằng cách sử dụng mã hóa Manchester hoặc mã hóa Ba trong sáu cho đồng hồ Chế độ T sang loại khác.
Việc thực hiện sử dụng trình xử lý gói ở chế độ độ rộng gói cố định cho cả truyền và nhận. Khi truyền, lớp PHY sẽ đọc trường L trong bộ đệm truyền và tính toán số byte được mã hóa, bao gồm cả postamble. Tổng số byte mã hóa được truyền được ghi vào thanh ghi Độ dài gói (0x3E).
Khi nhận, hai byte mã hóa đầu tiên được giải mã và trường L được ghi vào bộ đệm nhận. Trường L được sử dụng để tính số byte mã hóa sẽ nhận được. Sau đó, số byte được mã hóa sẽ được ghi vào thanh ghi Độ dài gói (0x3E). Hậu kỳ bị loại bỏ.
MCU phải giải mã trường L, tính toán số byte được mã hóa và ghi giá trị vào thanh ghi Độ dài gói trước khi nhận được độ dài gói ngắn nhất có thể. Trường L cho phép ngắn nhất cho lớp PHY là 9, cho 12 byte không được mã hóa. Điều này mang lại 18 byte được mã hóa cho Model T. Hai byte đầu tiên đã được giải mã. Do đó, thanh ghi Độ dài gói phải được cập nhật trong thời gian 16 byte ở tốc độ 100 kbps hoặc 1.28 mili giây. Điều này không có vấn đề gì đối với 8051 chạy ở 20 MIPS.
Số byte nhận được không bao gồm thẻ nhớ, ngoại trừ thẻ nhớ bốn chip được sử dụng cho các gói Chế độ T có độ dài gói lẻ. Do đó, người nhận không yêu cầu một dấu bưu điện, ngoại trừ các gói có độ dài lẻ Model T. Dấu đăng nhập này chỉ cần thiết để cung cấp một số nguyên byte được mã hóa. Nội dung của postamble bị bỏ qua; do đó, nếu bưu ảnh không được truyền đi, bốn chip nhiễu sẽ được nhận và bỏ qua. Vì tổng số byte được mã hóa bị giới hạn ở 255 (0xFF), việc triển khai giới hạn trường L tối đa cho các chế độ khác nhau.
Bảng 8. Giới hạn kích thước gói
được mã hóa | đã giải mã | Xe buýt M | ||||
byte | byte | Trường chữ L | ||||
Tháng mười hai | hex | Tháng mười hai | hex | Tháng mười hai | hex | |
Chế độ S | 255 | FF | 127 | 7 độ F | 110 | 6E |
Chế độ T (mét-khác) | 255 | FF | 169 | A9 | 148 | 94 |
Chế độ R | 255 | FF | 127 | 7 độ F | 110 | 6E |
Các giới hạn này thường cao hơn nhiều so với trường hợp sử dụng điển hình đối với đồng hồ đo không dây. Nên giữ độ dài gói nhỏ để có thời lượng pin tốt nhất có thể.
Ngoài ra, người dùng có thể chỉ định trường L tối đa sẽ nhận được (USER_RX_MAX_L_FIELD). Điều này xác định kích thước cần thiết cho bộ đệm nhận (USER_RX_BUFFER_SIZE).
Hỗ trợ trường L tối đa là 255 sẽ yêu cầu bộ đệm nhận là 290 byte và tối đa là 581 byte được mã hóa Manchester. Trình xử lý gói cần phải bị vô hiệu hóa và thanh ghi Độ dài gói không thể được sử dụng trong trường hợp đó. Điều này là khả thi, nhưng sẽ thuận tiện hơn nếu có thể sử dụng trình xử lý gói.
Sử dụng FIFO
Si4431 cung cấp một FIFO 64 byte để truyền và nhận. Vì số byte được mã hóa là 255, nên toàn bộ gói được mã hóa có thể không vừa trong bộ đệm 64 byte.
Quá trình lây truyền
Khi truyền, tổng số byte được mã hóa được tính toán. Nếu tổng số byte được mã hóa, bao gồm cả đoạn mã sau, nhỏ hơn 64 byte, thì toàn bộ gói được ghi vào FIFO và chỉ ngắt gói đã gửi được kích hoạt. Hầu hết các gói tin ngắn sẽ được gửi trong một lần chuyển FIFO.
Nếu số lượng byte được mã hóa lớn hơn 64, nhiều lần chuyển FIFO sẽ được yêu cầu để gửi gói tin. 64 byte đầu tiên được ghi vào FIFO. Các ngắt gói đã gửi và TX FIFO Gần như rỗng được kích hoạt. Ngưỡng TX FIFO gần như rỗng được đặt thành 16 byte (25%). Sau mỗi sự kiện IRQ, thanh ghi trạng thái 2 được đọc. Bit đã gửi gói được kiểm tra đầu tiên, và nếu gói chưa được gửi hoàn toàn, 48 byte dữ liệu mã hóa tiếp theo sẽ được ghi vào FIFO. Điều này tiếp tục cho đến khi tất cả các byte mã hóa đã được ghi và ngắt gói đã gửi xảy ra.
1. Lễ tân
Khi tiếp nhận, ban đầu, chỉ ngắt Đồng bộ hóa Word được bật. Sau khi nhận được từ đồng bộ, ngắt từ đồng bộ bị vô hiệu hóa và ngắt FIFO Gần như đầy đủ được bật. Ngưỡng gần như đầy đủ của FIFO ban đầu được đặt thành 2 byte. Ngắt FIFO gần như đầy đủ đầu tiên được sử dụng để biết khi nào hai byte độ dài đã được nhận. Khi độ dài đã được nhận, độ dài sẽ được giải mã và tính số byte được mã hóa. Sau đó, ngưỡng RX FIFO gần như đầy đủ được đặt thành 48 byte. RX FIFO gần như đầy và các ngắt Gói hợp lệ được bật. Trong sự kiện IRQ tiếp theo, thanh ghi trạng thái 1 được đọc. Đầu tiên, bit Gói hợp lệ được kiểm tra, sau đó kiểm tra bit FIFO Gần như đầy đủ. Nếu chỉ đặt bit RX FIFO gần như đầy đủ, 48 byte tiếp theo sẽ được đọc từ FIFO. Nếu bit gói hợp lệ được đặt, phần còn lại của gói được đọc từ FIFO. MCU theo dõi bao nhiêu byte đã được đọc và ngừng đọc sau byte cuối cùng.
Lớp liên kết dữ liệu
Mô-đun lớp liên kết dữ liệu thực hiện lớp liên kết tuân thủ 13757-4: 2005. Lớp liên kết dữ liệu (LINK) cung cấp giao diện giữa lớp vật lý (PHY) và lớp ứng dụng (AL).
Lớp liên kết dữ liệu thực hiện các chức năng sau:
- Cung cấp các chức năng chuyển dữ liệu giữa PHY và AL
- Tạo CRC cho các tin nhắn đi
- Phát hiện lỗi CRC trong các tin nhắn đến
- Cung cấp địa chỉ thực
- Xác nhận chuyển giao cho các chế độ giao tiếp hai chiều
- Các bit dữ liệu khung
- Phát hiện lỗi đóng khung trong thư đến
Định dạng khung lớp liên kết
Định dạng khung M-Bus không dây được sử dụng trong EN 13757-4: 2005 có nguồn gốc từ định dạng khung FT3 (Khung loại 3) từ IEC60870-5-2. Khung bao gồm một hoặc nhiều khối dữ liệu. Mỗi khối bao gồm một trường CRC 16 bit. Bock đầu tiên là một khối có độ dài cố định 12 byte bao gồm trường L, trường C, trường M và trường A.
- Trường chữ L
Trường L là độ dài của trọng tải dữ liệu lớp Liên kết. Điều này không bao gồm chính trường L hoặc bất kỳ byte CRC nào. Nó bao gồm trường L, trường C, trường M và trường A. Đây là một phần của tải trọng PHY.
Bởi vì số lượng byte được mã hóa bị giới hạn ở 255 byte, giá trị được hỗ trợ tối đa cho trường M là 110 byte cho dữ liệu được mã hóa Manchester và 148 byte cho dữ liệu được mã hóa Chế độ T Three-Out-of-Six.
Lớp Liên kết chịu trách nhiệm tính toán trường L trên đường truyền. Lớp liên kết sẽ sử dụng trường L khi tiếp nhận.
Lưu ý trường L không cho biết độ dài tải trọng PHY hoặc số byte được mã hóa. Khi truyền, PHY sẽ tính toán độ dài tải trọng PHY và số byte được mã hóa. Khi nhận được, PHY sẽ giải mã trường L và tính toán số byte để giải mã. - Trường C
Trường C là trường điều khiển khung. Trường này xác định loại khung và được sử dụng cho các nguyên thủy của dịch vụ trao đổi dữ liệu liên kết. Trường C cho biết loại khung - GỬI, XÁC NHẬN, YÊU CẦU hoặc TRẢ LỜI. Trong trường hợp khung GỬI và YÊU CẦU, trường C cho biết liệu mong đợi XÁC NHẬN hay TRẢ LỜI.
Khi sử dụng hàm Link TX cơ bản, bất kỳ giá trị nào của C đều có thể được sử dụng. Khi sử dụng Nguyên thủy Dịch vụ Liên kết, trường C được điền tự động theo EN 13757-4: 2005. - Trường M
Trường M là mã của nhà sản xuất. Các nhà sản xuất có thể yêu cầu mã gồm ba chữ cái sau web Địa chỉ: http://www.dlms.com/flag/INDEX.HTM Mỗi ký tự của mã gồm ba chữ cái được mã hóa thành năm bit. Có thể lấy mã 5 bit bằng cách lấy mã ASCII và trừ đi 0x40 (“A”). Ba mã 5-bit được nối với nhau để tạo thành 15-bit. Bit quan trọng nhất là số không. - Trường A
Trường địa chỉ là một địa chỉ 6 byte duy nhất cho mỗi thiết bị. Địa chỉ duy nhất phải được chỉ định bởi nhà sản xuất. Mỗi nhà sản xuất có trách nhiệm đảm bảo rằng mỗi thiết bị có một địa chỉ 6 byte duy nhất. Địa chỉ cho khung Gửi và Yêu cầu là địa chỉ chính của đồng hồ đo hoặc thiết bị khác. Khung dữ liệu xác nhận và phản hồi được gửi bằng địa chỉ của thiết bị gốc. - Trường CI
Trường CI là tiêu đề ứng dụng và chỉ rõ loại dữ liệu trong phần tải dữ liệu ứng dụng. Trong khi EN13757-4: 2005 chỉ định một số giá trị giới hạn, thì Nguyên tắc Dịch vụ Liên kết sẽ cho phép sử dụng bất kỳ giá trị nào. - CRC
CRC được quy định trong EN13757-4: 2005.
Đa thức CRC là:
X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
Lưu ý rằng M-Bus CRC được tính trên mỗi khối 16 byte. Kết quả là cứ 16 byte dữ liệu thì cần 18 byte để truyền,
Thông tin bổ sung
Để biết thêm thông tin về việc triển khai lớp liên kết, hãy xem “AN452: Hướng dẫn lập trình ngăn xếp M-Bus không dây”.
Quản lý năng lượng
Hình 2 cho thấy tiến trình quản lý điện năng cho một đồng hồ đo điệnample bằng cách sử dụng Chế độ T1.
MCU nên ở chế độ Ngủ bất cứ khi nào có thể để tiết kiệm năng lượng. Trong người yêu cũ nàyample, MCU đang ngủ khi RTC đang chạy, khi chờ khởi động tinh thể vô tuyến và khi truyền từ FIFO. MCU sẽ đánh thức từ tín hiệu EZRadioPRO IRQ được kết nối với đánh thức Port Match.
Khi truyền tin nhắn dài hơn một khối, MCU phải thức dậy để lấp đầy FIFO (dựa trên ngắt FIFO gần như trống) và sau đó quay lại chế độ ngủ.
MCU phải ở chế độ Chờ chạy từ bộ dao động công suất thấp hoặc bộ dao động chế độ cụm khi đọc từ ADC. ADC yêu cầu đồng hồ SAR.
Khi không sử dụng, EZRadioPRO phải ở chế độ Tắt máy với chân SDN hướng lên cao. Điều này yêu cầu kết nối có dây với MCU. Các thanh ghi EZ Radio Pro không được duy trì ở chế độ tắt máy; vì vậy, EZRadioPro được khởi tạo trên mỗi khoảng thời gian RTC. Khởi tạo Radio mất ít hơn 100 µs và bảo toàn 400 nA. Điều này dẫn đến tiết kiệm năng lượng 10 µJ, dựa trên khoảng thời gian 10 giây.
Tinh thể EZRadioPRO mất khoảng 16 ms cho một POR. Điều này đủ dài để tính toán CRC cho khoảng tám khối. MCU sẽ trở lại trạng thái ngủ nếu nó hoàn thành tất cả các CRC trước khi tinh thể ổn định. Nếu cần mã hóa, nó cũng có thể được bắt đầu trong khi chờ đợi trên bộ dao động tinh thể.
MCU sẽ chạy ở 20 MHz sử dụng bộ dao động công suất thấp cho hầu hết các tác vụ. Các tác vụ yêu cầu thời gian chờ chính xác phải sử dụng bộ dao động chính xác và chế độ nghỉ thay vì chế độ nghỉ. RTC cung cấp đủ độ phân giải cho hầu hết các tác vụ. Tiến trình quản lý năng lượng cho đồng hồ T2 cũampỨng dụng le được thể hiện trong Hình 3.
Việc triển khai bộ thu phát phải được tối ưu hóa cho trường hợp bình thường khi đồng hồ hoạt động và không có đầu đọc. Thời gian chờ ACK tối thiểu / tối đa đủ dài để có thể sử dụng C8051F930 RTC và đặt MCU vào chế độ nghỉ.
Các tùy chọn xây dựng được cung cấp cho nguồn điện chính hoặc đầu đọc hỗ trợ USB không cần sử dụng chế độ nghỉ. Chế độ nhàn rỗi sẽ được sử dụng thay vì ngủ để USB và UART có thể làm gián đoạn MCU.
Studio Đơn giản
Truy cập bằng một cú nhấp chuột vào MCU và các công cụ không dây, tài liệu, phần mềm, thư viện mã nguồn và hơn thế nữa. Có sẵn cho Windows,
Mac và Linux!
![]() |
![]() |
![]() |
![]() |
Danh mục đầu tư IoT www.silabs.com/IoT |
SW / HW www.silabs.com/simparies |
Chất lượng www.silabs.com/quality |
Hỗ trợ và cộng đồng Community.silabs.com |
Tuyên bố miễn trừ trách nhiệm
Silicon Labs có ý định cung cấp cho khách hàng tài liệu mới nhất, chính xác và chuyên sâu về tất cả các thiết bị ngoại vi và mô-đun có sẵn cho những người 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 Silicon Labs. Dữ liệu đặc tính, 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. Ứng dụngamples được mô tả ở đây chỉ dành cho 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 và không giới hạn thông tin sản phẩm, thông số kỹ thuật và mô tả ở đây, đồng thời không đưa ra bảo đảm về tính chính xác hoặc hoàn chỉnh của thông tin được bao gồ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 ở đây. Tài liệu này không ngụ ý hoặc thể hiện các giấy phép bản quyền được cấp dưới đây để 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ỳ Hệ thống Hỗ trợ Sự sống nào mà không có sự đồng ý cụ thể bằng văn bản của Silicon Labs. “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 mục đích 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 cho 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í đó.
Thông tin nhãn hiệu
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® và logo Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Biểu trưng Energy Micro, Energy Micro 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”, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simp —— Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® 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à ngón tay cái 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. 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ỳ
http://www.silabs.com
Tài liệu / Tài nguyên
![]() |
Triển khai phần mềm M-BUS không dây SILICON LABS AN451 [tập tin pdf] Hướng dẫn sử dụng SILICON LABS, C8051, MCU và, EZRadioPRO, M-bus không dây, Không dây, M-BUS, Phần mềm, Triển khai, AN451 |