Get in Toucharrow

CONTACT US

MSP430 HDMI CEC UART CONVERTER

Introduction

Lying on the sofa on a lazy weekend? Sluggish about having to get up and use multiple remote controls to switch on and off the TV, speakers, etc? Frustrated about using ten different remote controls for ten devices? Isn’t it cool to control your computer with your TV’s or AV receiver’s remote control? Let’s make life easy with one remote control using HDMI CEC UART Converter to Control your TV, DVD, AV Receiver, or computer/laptop with just one remote control! Make this happen with HDMI CEC.

UART CONVERTER
HDMI (High-Definition Multimedia Interface) CEC:

HDMI is an audio/video interface for transferring uncompressed digital audio/video data between HDMI-compliant devices.
CEC (Consumer Electronics Control) is an optional HDMI feature that allows the user to operate multiple HDMI-connected devices with just one remote control. But not many consumers know about the HDMI-CEC feature even though it may already be enabled on a device.

For example, you can use your TV’s remote control to control the TV, computer, DVD, AV Receiver, and others. CEC-enabled devices can also control each other without user intervention, for example, when you power off your TV, it can power off other components if it’s connected through HDMI. It is possible to command and control up to ten CEC-enabled devices that are connected to HDMI.

 

How does it work?

HDMI-CEC uses a one-wire bidirectional serial bus that uses the AV link protocol to perform remote control functions.

It’s a single shared bus or a one-wire bus (pin 13) that is directly connected between all HDMI ports on an HDMI system, which allows products to pass the messages to one another.

HDMI

People have difficulty with how/when/why to set up these devices to use as HDMI systems are comprised of various/separate components, which are not always easy to configure and operate thus making the setup more complex.

To make it more user-friendly the CEC is used. CEC uses signal routing to allow devices to be configured across a system rather than just point-to-point. For example, one-touch play. When you insert a disc into your disc player, and press play, it commands the TV to switch to the HDMI input that the player is connected to, which greatly simplifies the user experience.

 

Generally, CEC messages consist of two functional categories

Request – Asking another device(s) to take action or to give information (e.g. asking a device to play, switch sources, or request a device’s physical address).
Informative – Status messages and messages describing where a device is in a network (e.g. report physical address, report vendor ID).

 

CEC messages can also be grouped in terms of the intended target device:

Directed – Message sent to a single CEC device.
Broadcast – Sent to all devices in the CEC network.

USB Connector

Approach

The main objective of the project is to make communicate with HDMI devices through UART Converter. The UART signal is connected to MSP430 (ez430 f2013). And the codes are written in C Language in IAR IDE.

HDMI CEC UART CONVERTER

‘C’ is the place where the Microcontroller i.e. the MSP430 (ex430 f2013) is connected. A is the product and A & B are connected through HDMI Cable. The CEC of the HDMI is connected to the microcontroller. The input from the microcontroller via UART Converter (for example keyboard) is given and the content is displayed on the TV. As HDMI is uncompressed, whatever the signals which we send are received through the HDMI CEC wire. This technique can similarly be deployed in one remote project just by connecting ‘n’ of HDMI CEC devices. Supposing say one wants to connect DVR, TV, Laptop, and Speaker all these can be accessed by one remote or keyboard.

 

Coding

/* Project Name: HDMI_CEC UART CONVERTER */

#include “msp430f2013.h”

#include “stdbool.h”

#include “uciRS232.h”

#include “delay.h”

#include “cecCommunication.h”

#include “hdmiPortdetect.h”

unsigned char count = 0;

unsigned char ii = 0;

unsigned int *ptr;

void main(void){

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

BCSCTL1 = 0x86; // Set range

BCSCTL2 = 0x40; // Set range

DCOCTL = 0x60; // SMCLK = DCO = 1MHz

TACTL = 0X0210; //Set timer_A control reg

CCTL0 = 0X0000; // CCR0 interrupt disabled

CCR0 = 60000;

P1DIR |= 0X5D; //[P1.0,P1.4,P1.6 –>OUT PUT],[P1.7,P1.5 –>IN PUT]

SD16AE = 0X00;

P1SEL = 0X00;

P1REN |= 0X40;

P1OUT = 0X50;

P1IE = 0x00;

P1IES = 0XA0; // interrupt transaction edgge select

P1IFG = 0x00;

P1IE = 0xA0;// pin interrupt enabled

hdminSource();//HDMI HOT PLUG DETECTION IF U WANT TO USE U CAN USE OTHERWISE COMMENT THIS.

while(1){

_BIS_SR(0X0008);//GIE = 1

}

}

#pragma vector=PORT1_VECTOR

__interrupt void Port_1(void){

_BIS_SR(0X0000);//GIE = 0

if((P1IFG & 0x20) == 0x20){

cectx (rxData ());

}

else if((P1IFG & 0x80) == 0x80){

txData (cecrx ());

}

P1IFG = 0x00; // IFG cleared

}

July 15, 2014

Embedded Automotive Design and Development


Embedded Automotive Design and Development
Comments 0
July 15, 2014

Enterprise Mobility Solutions


Enterprise Mobility Solutions
Comments 0