图56.2.1 PWM DAC硬件连接示意图
56.3 软件设计
本章,我们在第二十五章实验 (实验20 )的基础上修改,先打开实验20 的工程,在HARDWARE文件夹所在文件夹下新建一个USB的文件夹,然后在USB文件夹下面新建LIB和CONFIG文件夹,分别用来存放与USB核相关的代码以及配置部分代码。这两部分代码我们也不细说(详见光盘本例程源码),其中USB文件夹里面的代码同上一章的一模一样,而CONFIG文件夹里面的源码则来自MDK自带的Audio_Speaker例程: X:Keil3.80AARM
ExamplesSTSTM32F10xUSBLibDemosAudio_Speaker下的source和include文件夹(X为你安装MDK的磁盘)。
然后,我们在工程文件里面新建USB和USBCFG组,分别加入USBLIB下面的代码和USBCONFIG下面的代码。然后把LIB和CONFIG文件夹加入头文件包含路径。
本章,我们还需要通过音频选择电路和耳机驱动电路来推动耳机输出,所以还需要加入音频选择部分的驱动,我们将第四十章实验(实验35)的AUDIOSEL文件夹拷贝到本工程的HARDWARE文件夹下,将audiosel.c加入HARDWARE组下,并将AUDIOSEL文件夹加入头文件包含路径。
最后在test.c里面,我们修改main函数如下:
//设置USB 连接/断线
//enable:0,断开
// 1,允许连接
void u***_port_set(u8 enable)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
if(enable)_SetCNTR(_GetCNTR()&(~(1<<1)));//退出断电模式
else
{
_SetCNTR(_GetCNTR()|(1<<1)); // 断电模式
GPIOA->CRH&=0XFFF00FFF;
GPIOA->CRH|=0X00033000;
PAout(12)=0;
}
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
KEY_Init(); //按键初始化
usmart_dev.init(72); //usmart初始化
Audiosel_Init(); //初始化声道选择
POINT_COLOR=RED;//设置字体为蓝色
LCD_ShowString(60,50,200,16,16,"WarShip STM32");
LCD_ShowString(60,70,200,16,16,"USB Sound Card TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2012/9/25");
LCD_ShowString(60,130,200,16,16,"USB Connecting...");//提示SD卡已经准备了
delay_ms(1800);
u***_port_set(0);//USB先断开一下
delay_ms(300);
u***_port_set(1);//USB再次连接
//USB配置
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
Speaker_Config();
Audiosel_Set(2); //设置到PWM音频通道
LCD_ShowString(60,130,200,16,16,"USB Connecting...");//提示SD卡已经准备了
while(1)
{
if(bDeviceState==CONFIGURED)//USB连接上了?
{
LED1=0;
LCD_ShowString(60,130,200,16,16,"USB Connected ");//SD卡已经准备了
}else
{
LED1=1;
LCD_ShowString(60,130,200,16,16,"USB DisConnected ");//SD卡连接失败
}
LED0=!LED0;
delay_ms(200);
};
}
该部分代码同样有u***_port_set函数,这里我们就不介绍该函数了。在main函数里面,我们通过调用Speaker_Config函数,配置TIM4_CH1为281.25Khz 的PWM输出,配置TIM7为22Khz的定时中断,其他部分我们就不详细介绍了。
软件设计部分就为大家介绍到这里。
56.4 下载验证
在代码编译成功之后,我们通过下载代码到战舰STM32开发板上,在USB配置成功后(注意:USB数据线,要插在USB端口!不是USB_232端口!),LCD显示效果如图56.4.1所示:
图56.4.1 USB连接成功
此时,电脑提示发现新硬件如图56.4.2所示:
图56.4.2 USB读卡器被电脑找到
等USB配置成功后,DS1常亮,DS0闪烁,并且在设备管理器à声音、视频和游戏控制器里面看到多了USB Audio Device,如图56.4.3所示:
图56.4.3 USB Audio Device
此时,电脑的所有音频输出都被切换到USB声卡输出,将耳机插入战舰STM32开发板的PHONE端口,即可听到来自电脑的声音。
`
2