S3C6410裸机AC97驱动(2)

/*************************************************************************************************************
 * 文件名: AC97.h
 * 功能:  S3C6410 AC97底层驱动函数
 * 作者:  cp1300@139.com
 * 创建时间: 2012年10月6日20:41
 * 最后修改时间:2012年10月6日
 * 详细:  AC97控制器底层驱动
*************************************************************************************************************/
#ifndef AC97_H_
#define AC97_H_


//AC97控制器状态
typedef enum
{
 AC97_State_Idle  = 0,
 AC97_State_Init  = 1,
 AC97_State_Ready  = 2,
 AC97_State_Active  = 3,
 AC97_State_LP   = 4,
 AC97_State_Warm  = 5
}AC97_State;


//AC97读写命令控制
typedef enum
{
 AC97_WRITE  = 0,
 AC97_READ  = 1
}AC97_CMD;


u8 AC97_Init(void);    //AC97初始化
u16 AC97_CodeCMD(AC97_CMD AC97_RW,u8 RegAddr,u16 CmdData);
void AC97_IntEnable(u32 Int,u8 Enable);
void AC97_IntClear(u32 Int);
u32 AC97_GetIntStatus(void);
AC97_State AC97_GetContStatus(void);

#endif /*AC97_H_*/

//main.c

#include "system.h"
#include "uart.h"
#include "tft_lcd.h"
#include "other.h"
#include "delay.h"
#include "timer.h"
#include "ac97.h"


//LED1闪烁程序,在定时器0中断服务程序中闪烁,周期400MS
void LED1_flash(void)
{
 LED1_FLASH();
}

int main(void)

 LCD_Init();     //初始化LCD
 UART0_Init(DISABLE,115200); //初始化串口,失能中断接收,波特率115200
 LED_Init();     //初始化LED

Timer1_Init(400000-1,ENABLE,LED1_flash); //初始化定时器0,周期400ms
 
 lcd_printf("Get_FCLK : %d Hz\n",Get_FCLK()); 
 lcd_printf("Get_PCLK : %d Hz\n",Get_PCLK());
 
 if(AC97_Init())    //初始化AC97控制器
 {
  lcd_printf("AC97 Init error!\n");
 }
 else
 {
  lcd_printf("AC97 Init OK!\n");
 }
 lcd_printf("0x%X\n",AC97_CodeCMD(AC97_READ,0x7c,0));
 lcd_printf("0x%X\n",AC97_CodeCMD(AC97_READ,0x7e,0));
 while(1)
 {
  LED2_FLASH();  //LED2闪烁
  Delay_US(600000);
 }
}

S3C6410裸机AC97驱动


我读取这两个寄存器的值,但是读取到的一直是0,不知道问题在哪

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/afd2f8d27f448807d59027c1918f17eb.html