📄 stm32100b_eval_cec.c
字号:
MyLogicalAddress = 0x01;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0x2); /* Own address = 0x2 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x22);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x02;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0x9); /* Own address = 0x9 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x99);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x09;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
MyLogicalAddress = 0x0F;
errorstatus = HDMI_CEC_DEVICE_UNREGISTRED;
}
}
}
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
}
/* Device type = CEC_TUNER */
if (DeviceType == HDMI_CEC_TUNER)
{
CEC_OwnAddressConfig(0x3); /* Own address = 0x3 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x33);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x03;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0x6); /* Own address = 0x6 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x66);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x06;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0x7); /* Own address = 0x7 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x77);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x07;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0xA); /* Own address = 0xA */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0xAA);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x0A;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
MyLogicalAddress = 0x0F;
errorstatus = HDMI_CEC_DEVICE_UNREGISTRED;
}
}
}
}
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
}
/* Device type = CEC_PLAYBACK */
if (DeviceType == HDMI_CEC_PLAYBACK)
{
CEC_OwnAddressConfig(0x4); /* Own address = 0x4 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x44);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x04;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0x8); /* Own address = 0x8 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x88);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x08;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
CEC_OwnAddressConfig(0xB); /* Own address = 0xBB */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0xBB);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x0B;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
MyLogicalAddress = 0x0F;
errorstatus = HDMI_CEC_DEVICE_UNREGISTRED;
}
}
}
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
}
/* Device type = CEC Audio System */
if (DeviceType == HDMI_CEC_AUDIOSYSTEM)
{
CEC_OwnAddressConfig(0x5); /* Own address = 0x5 */
CEC_EndOfMessageCmd(ENABLE);
CEC_SendDataByte(0x55);
/* Start of message */
CEC_StartOfMessage();
count = 0;
/* Wait till the header message is sent */
while ((CEC_GetFlagStatus(CEC_FLAG_TBTRF) == RESET) && (CEC_GetFlagStatus(CEC_FLAG_TERR) == RESET) && (count < HDMI_CEC_TIMEOUT_VALUE))
{
count++;
}
if (count >= HDMI_CEC_TIMEOUT_VALUE)
{
errorstatus = HDMI_CEC_TIMEOUT;
return(errorstatus);
}
errorstatus = HDMI_CEC_GetErrorStatus();
if (errorstatus == HDMI_CEC_BLOCK_ACKNOWLEDGE)
{
MyLogicalAddress = 0x05;
errorstatus = HDMI_CEC_OK;
}
else if (errorstatus == HDMI_CEC_OK)
{
MyLogicalAddress = 0x0F;
errorstatus = HDMI_CEC_DEVICE_UNREGISTRED;
}
/* Clear CEC CSR register */
CEC_ClearFlag(CEC_FLAG_TBTRF | CEC_FLAG_TERR);
CEC_EndOfMessageCmd(DISABLE);
}
return errorstatus;
}
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -