Kết nối bộ vi điều khiển ATmega với bus HDMI CEC


7

Tôi cần một chút trợ giúp với một mạch thích hợp để kết nối giữa vi điều khiển và bus HDMI CEC .

Đây là toàn bộ kế hoạch:

CEC Về cơ bản tôi muốn sử dụng một vi điều khiển ATMega để giải mã tín hiệu bus CEC và liên lạc qua bus CEC với các thiết bị hoàn hảo khác (TV / BD-Player / AV).

Trạng thái hiện tại:

Tôi đã kết nối dòng CEC với chân chụp đầu vào của vi điều khiển của tôi. Và CEC nối đất của vi điều khiển. Bus CEC hoạt động ở mức 3,3V (tối đa 3,63V) và vi điều khiển của tôi ở mức 5V. Đây không phải là vấn đề lớn và hoạt động tốt (do ngưỡng chuyển đổi). Một chương trình C đang thực hiện công việc giải mã tín hiệu và hiện đang gửi nó qua UART. Điều này hoạt động rất tốt và tôi có thể đọc mọi tín hiệu của các thiết bị có khả năng CEC của mình.

Bây giờ vấn đề:

Trong trạng thái hiện tại tôi chỉ có thể đọc tín hiệu, nhưng rõ ràng tôi cũng muốn viết một cái gì đó. Làm thế nào để tôi cần kết nối vi điều khiển của mình để thay đổi trạng thái giữa cao / thấp trên xe buýt?

Có lẽ là Giải pháp?!:

Do các mức logic khác nhau (3,3V <-> 5V) trước tiên tôi cần một số mức dịch chuyển. Tôi sẽ sử dụng một bộ chia điện áp đơn giản (10k và 6,8k) và kết nối nó với đường dây CEC từ một số chân đầu ra (trừ chân tôi đang sử dụng để đọc tín hiệu). Nó sẽ làm việc như thế này? Nếu dòng này CAO và tôi cũng đang áp dụng trạng thái CAO với vi điều khiển của mình, điều này có gây ra vấn đề gì không? Làm thế nào tôi sẽ giảm thiểu hiện tại đi ra ngoài?

Tôi không muốn làm hỏng bất cứ điều gì ở đây và kiến ​​thức về điện của tôi chỉ là những thứ cơ bản: D

Câu trả lời:


2

Do bus HDMI CEC là cấu hình bộ thu mở với các pullups được chia sẻ như i2c, bạn nên ghi vào nó bằng cách chuyển trạng thái của cổng (thanh ghi hướng dữ liệu hoặc DDR) giữa đầu vào (không ảnh hưởng đến bus, 1) thành đầu ra 0 (kéo xe buýt xuống) và trở lại. Thay vì ghi 1 và 0 vào thanh ghi PORT [ABCD] vì vi điều khiển không cần phải kéo dòng trở lại.

Trên các bộ vi điều khiển khác, bạn có thể định cấu hình cổng ở chế độ thoát mở hoặc sử dụng thiết bị ngoại vi CEC tích hợp.

Bạn nên vô hiệu hóa điện trở kéo lên / xuống tích hợp của vi điều khiển. Xe buýt đã có pullups và của bạn sẽ không phù hợp với thông số điện áp / hiện tại theo yêu cầu của xe buýt. Một thiết bị thương mại có thể cung cấp điện trở kéo lên riêng biệt hoặc dựa vào đầu kia tùy thuộc vào thông số kỹ thuật.

Nó cũng sẽ là một ý tưởng tốt để chạy ATMega của bạn ở 3,3V. Nó sẽ hoạt động ở 3,3V; nhiều AVR được thiết kế để hoạt động đến 1.8V.


cảm ơn câu trả lời của bạn. Tôi cũng nghĩ về việc chỉ cần kéo dòng xuống (vì ai đó đang kéo nó lên). Vì vậy, tôi sẽ chỉ sử dụng một pin và kết nối trực tiếp với dòng CEC. Để áp dụng trạng thái THẤP, tôi sẽ đặt DDRD = 0x01 (đầu ra) với ouptut là PORTD = 0x00 (THẤP). Đối với trạng thái CAO, tôi chỉ cần đặt pin thành đầu vào lại (DDRD = 0x00). Trên trạng thái đầu vào điện trở kéo lên cần phải được vô hiệu hóa? (Có vấn đề gì không?) Và nếu tôi áp dụng trạng thái CAO (PORTD = 0x01) trên pint đầu ra thì điều này rõ ràng sẽ gây ra một số vấn đề?
MrNobody

Bạn nên vô hiệu hóa pull up của bạn. Xe buýt đã có chúng ở điện áp chính xác.
joeforker

1

Có rất nhiều thông tin trong chủ đề này tại diễn đàn Arduino , có sơ đồ cho cả nhận và truyền, xem bên dưới. Trả lời # 81, trên trang 6, có các tệp sơ đồ và bố cục Cadsoft Eagle hoàn chỉnh.

Cũng có thể hữu ích khi kết nối I2C với cổng HDMI để lấy thông tin EDID từ TV, không cần mạch nếu AVR chạy ở 3.3V, chỉ cần kết nối dữ liệu và chân đồng hồ trực tiếp từ AVR sang HDMI (xem đại bàng sơ đồ).

Họ cũng đã viết một số loại thư viện, tôi không chắc nó hữu ích như thế nào vì nó được viết cho Arduino, nhưng mã có thể được tìm thấy trên Google Code .

Hãy chia sẻ thư viện C của bạn cho AVR, tôi rất muốn có một cái gì đó để bắt đầu với chính mình. :)

CEC nhận và truyền,


-1

tất cả những gì bạn cần là mạch bên dưới.

nhập mô tả hình ảnh ở đây

Xin vui lòng, bạn có thể chia sẻ dự án của bạn?

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.