设为首页 加入收藏

TOP

S3C6410裸机AC97驱动(二)
2014-11-24 07:40:30 来源: 作者: 【 】 浏览:2
Tags:S3C6410 裸机 AC97 驱动
1);

return 0;
}



/*************************************************************************************************************************
*函数 : u16 AC97_CodeCMD(AC97_CMD AC97_RW,u8 RegAddr,u16 CmdData)
*功能 : AC97读写命令控制
*参数 : AC97_RW:读写控制,见AC97_CMD;RegAddr:寄存器地址;CmdData:命令数据
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20121006
*最后修改时间: 20121006
*说明 : 连续写命令需要延时,一个命令到下一个命令之间有延时多于1 / 48KHz 大约23US
*************************************************************************************************************************/
u16 AC97_CodeCMD(AC97_CMD AC97_RW,u8 RegAddr,u16 CmdData)
{
if(AC97_RW == AC97_READ) //读取
{
AC97->CODEC_CMD = (u32)((RegAddr << 16) | (1 << 23) | (0 << 0));
Delay_US(AC97_CMDREAD_DELAY);
return (u16)(AC97->CODEC_STAT & 0xffff);
}
else if(AC97_RW == AC97_WRITE) //写入
{
AC97->CODEC_CMD = (u32)((RegAddr << 16) | (0 << 23) | (CmdData << 0));
Delay_US(AC97_CMDWRITE_DELAY);
return 0;
}
else
{
DEBUG("AC97 CMD Error!\n");
return 0;
}
}




/*************************************************************************************************************************
*函数 : void AC97_IntEnable(u32 Int,u8 Enable)
*功能 : AC97控制器中断控制
*参数 : Int:中断编号,见宏定义;Enable:ENABLE:使能中断,DISABLE:取消中断
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20121008
*最后修改时间: 20121008
*说明 : 无
*************************************************************************************************************************/
void AC97_IntEnable(u32 Int,u8 Enable)
{
if(Enable == ENABLE) //使能中断
{
AC97->GLBCTRL |= Int;
}
else //取消中断
{
AC97->GLBCTRL &= ~Int;
}
}



/*************************************************************************************************************************
*函数 : void AC97_IntClear(u32 Int)
*功能 : AC97控制器中断清除
*参数 : Int:中断编号,见宏定义
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20121008
*最后修改时间: 20121008
*说明 : 无
*************************************************************************************************************************/
void AC97_IntClear(u32 Int)
{
AC97->GLBCTRL |= (Int << 8); //写1清除对应中断
}



/*************************************************************************************************************************
*函数 : u32 AC97_GetIntStatus(void)
*功能 : 获取AC97中断状态
*参数 : 无
*返回 : 中断状态
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20121008
*最后修改时间: 20121008
*说明 : 返回的中断状态与中断编号相与
*************************************************************************************************************************/
u32 AC97_GetIntStatus(void)
{
return (AC97->GLBSTAT & (0x7f << 16));
}



/*************************************************************************************************************************
*函数 : AC97_State AC97_GetContStatus(void)
*功能 : 获取AC97控制器状态
*参数 : 无
*返回 : 控制器状态,见AC97_State
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20121009
*最后修改时间: 20121009
*说明 : 无
*************************************************************************************************************************/
AC97_State AC97_GetContStatus(void)
{
return (AC97_State)(AC97->GLBSTAT & 0x07);
}




//AC97控制器中断服务程序
void __irq Isr_AC97(void)
{
if(AC97->GLBSTAT & CODE_READY_INT) //编解码器准备就绪中断
{

}
if(AC97->GLBSTAT & PCM_OUT_UNDER_INT) //PCM输出通道FIFO空中断
{

}
if(AC97->GLBSTAT & PCM_IN_OVER_INT) //PCM输入通道FIFO满中
{

}
if(

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇S3C6410 硬件JPEG解码无关代码影.. 下一篇S3C6410图形旋转裸机驱动

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)