Truyền thông nối tiếp MSP430 bị lỗi trong thời tiết lạnh


8

Tôi có một sản phẩm sử dụng bộ vi xử lý MSP430, đã được bán vài năm nay. Một trong những công việc của MSP430 là liên lạc qua nối tiếp không đồng bộ với radio công suất thấp.

Với sự khởi đầu của mùa đông này, đã có một tỷ lệ thất bại không thể chấp nhận (vài phần trăm) trong nhiệt độ lạnh. Điều tra đã phát hiện ra rằng giao tiếp nối tiếp với radio đang thất bại. Bộ tạo baudrate cho cổng nối tiếp được cung cấp bởi SMCLK, được chia từ bộ tạo dao động điều khiển kỹ thuật số (DCO) của MSP430.

Tại sao truyền thông nối tiếp thất bại ở nhiệt độ thấp?

(Lưu ý: Tôi đã giải quyết vấn đề và sẽ sớm đăng câu trả lời. Gợi ý: đó là lỗi phần mềm.)

Câu trả lời:


8

MSP430 nào bạn đang sử dụng? Các gia đình khác nhau có cấu trúc và khả năng đồng hồ khác nhau.

DCO sẽ thay đổi tần số theo nhiệt độ khiến tốc độ truyền của USART không vượt quá thông số kỹ thuật. MSP có cảm biến nhiệt độ (không chính xác lắm). Bạn có thể thay đổi các giá trị trong các thanh ghi điều khiển DCO để đưa tần số DCO trở lại trong phạm vi nhưng điều này sẽ yêu cầu các bảng tra cứu hiệu chỉnh bao gồm phạm vi nhiệt độ mà bạn mong đợi. Một số thiết bị MSP có các bảng hiệu chuẩn DCO được lập trình thành một trong các lĩnh vực flash khi sản xuất nhưng chúng chỉ hữu ích nếu chúng bao gồm tần số bạn muốn sử dụng và tôi không nghĩ rằng chúng có giá trị bù nhiệt độ.

Bạn có bộ tạo dao động tinh thể tham chiếu mà bạn có thể sử dụng làm nguồn hiệu chuẩn không? Tôi sẽ luôn thiết kế trong một tinh thể 32kHz và sử dụng nó trên ACLK. Đối với tốc độ baud lên đến 9600, điều này có thể được sử dụng trực tiếp. Đối với tốc độ truyền cao hơn, bạn sẽ phải hiệu chỉnh DCO theo tín hiệu ACLK. Các phần mới hơn có FLL phần cứng sẽ tự động làm điều này.


7

Vì vậy, đây là câu trả lời:

Sản phẩm này có tinh thể 32 kHz và tôi đã mã hóa một thói quen để điều chỉnh tần số DCO. Việc điều chỉnh tần số đã sử dụng hai bộ định thời, một từ DCO và một từ ACLK 32kHz. Nó được điều khiển bởi một hệ thống chụp / so sánh bị gián đoạn, do đó nó có thể tự kiểm tra lại định kỳ trong quá trình vận hành.

Thật không may, tôi đã chèn hiệu chuẩn ban đầu vào phần sai của mã khởi động, nơi các ngắt bị tắt. Do đó, việc hiệu chuẩn đã không xảy ra trước lần sử dụng đầu tiên của cổng nối tiếp và việc khởi tạo sẽ bị treo chờ phản hồi trên cổng nối tiếp.

Tần số DCO bắt đầu ở giá trị hiệu chuẩn của nhà máy, đó là lý do tại sao nó hoạt động ở nhiệt độ phòng.

Những cốt truyện kể câu chuyện:

Đầu tiên, đường cong nhiệt độ DCO: văn bản thay thế

Bây giờ đường cong sau khi hiệu chuẩn thực sự hoạt động: văn bản thay thế


1
Câu chuyện hay! Có tốn nhiều chi phí để sửa chữa không? : D
tyblu

Điều thú vị là độ dốc thay đổi từ biểu đồ thứ nhất sang biểu đồ thứ hai. Bất kỳ lý thuyết? Việc điều chỉnh DCO có tần số thấp hơn có cho hệ số nhiệt độ kém hơn không?
W5VO

Lưu ý rằng trục y thay đổi giữa hai biểu đồ. Và đừng đọc quá nhiều vào chúng nói chung. Bộ phận được đông lạnh trong tủ đông lạnh trong nước và nhiệt độ được đo trong quá trình làm ấm đến nhiệt độ phòng bằng cặp nhiệt điện trên giá rẻ MAS-345 ( elapi.com/tst_s345.htm ) chỉ đọc được số nguyên. Sau đó, tôi nội suy tuyến tính giữa các thay đổi toàn độ để thực hiện cốt truyện.
markrages

5

Nhiệt độ thấp khiến tần số DCO tăng đủ để khiến tốc độ truyền của UART tăng quá cao? Bạn đo nhiệt độ rồi bù dao động trong phần mềm?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.