体声芯片TLV320AIC23的应用理工文档格式.docx
- 文档编号:22882109
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:22
- 大小:117.31KB
体声芯片TLV320AIC23的应用理工文档格式.docx
《体声芯片TLV320AIC23的应用理工文档格式.docx》由会员分享,可在线阅读,更多相关《体声芯片TLV320AIC23的应用理工文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
5
15
模拟地
AVDD
4
14
模拟供电正输入,典型值3.3V。
BCLK
23
3
I2C串行时钟位,在主机模式时,AIC23给DSP产生时钟,在从机模式下,时钟信号由DSP产生。
BVDD
21
1
缓冲器供电输入,电压范围从2.7V到3.6V。
CLKOUT
22
2
O
时钟输出脚,可以选择XTI输入的一倍频或1/2倍频,采样率控制寄存器位7控制其输出选择
12
I
控制端口锁存或地址选择,在SPI模式下,此引脚作为数据锁存控制端,在I2C模式下,作为7位地址最后一位。
DIN
24
4
I2C格式串行数据输入给D/A转换器。
DGND
20
28
数字地。
DOUT
27
6
I2C格式A/D转换器串行数据输出。
DVDD
19
数字供电输入,电压范围从1.4V到3.6V。
HPGND
32
11
耳机放大器供电地。
HPVDD
29
8
耳机放大器供电输入,典型值3.3V。
LHPOUT
30
9
立体声左声道耳机放大器输出,默认0-dB输出,增益从–73dB到6dB可调,每步1-dB
LLINEIN
立体声左声道输入,默认0-dB输入,增益从–34.5dB到12dB可调,每步1.5-Db。
LOUT
立体声左声道输出。
LRCIN
26
I2SD/A转换器字时钟信号,主机模式下,AIC23产生这个祯信号发送给DSP,在从机模式下,这个信号由DSP产生。
LRCOUT
7
I2CA/D转换器字时钟信号,主机模式下,AIC23产生这个祯信号发送给DSP,在从机模式下,这个信号由DSP产生。
MICBIAS
17
低噪声电压缓冲器输出,适用于驻极体电容麦克风的偏置电压,电压典型值等于3/4AVDD。
MICIN
18
驻极体电容麦克风输入,可以不用外部电阻。
MODE
13
串行接口模式输入,MODE=0,为I2C模式,MODE=1,为SPI模式。
NC
1,9,
17,25
未使用引脚,没有和内部相连。
RHPOUT
31
10
立体声右声道耳机放大器输出,默认0-dB输出,增益从–73dB到6dB可调,每步1-dB。
RLINEIN
立体声右声道输入,默认0-dB输入,增益从–34.5dB到12dB可调,每步1.5-dB。
ROUT
立体声右声道输出。
SCLK
控制端口串行时钟输入,在SPI和I2C模式下都作为串行时钟输入。
SDIN
控制端口串行数据输入,在SPI和I2C模式下都作为串行数据输入,也用于复位。
后选择控制协议
VMID
16
中心电压去耦输入,10μF和0.1μF电容并行接到此引脚,用于滤除噪声。
XTI/MCLK
25
晶体或外部时钟输入,用于为AIC23提供内部时钟源。
XTO
晶体输出,连接外部晶体,当使用外部时钟源时,此引脚不用。
5.1.3TLV320AIC23与C5509的硬件连接
TLV320AIC23与C5509的硬件连接如图5-3所示。
在模拟电路设计部分,麦克风输入信号经过电容C52、C55和电阻R75组成的滤波电路;
音频线输入使用1/2分压电路和隔直流电容;
耳机线和音频线输出使用电容进行隔直流。
将AIC23串行控制接口模式设成I2C模式,即22脚经过一个电阻后接地,数据输出输入接口和C5509的McBSP0相连接;
其它要点请读者参照图进行研究。
图5-3TLV320AIC23与C5509的硬件连接图
5.2TLV320AIC23应用实验
5.2.1实验目的
⏹了解C55xDSPI2C接口、McBSP接口;
⏹了解立体声芯片TLV320AIC23;
⏹学习I2C接口、McBSP接口、AIC23的初始化;
⏹学习中断处理;
5.2.2实验设备
⏹PC兼容机一台;
操作系统为Windows2000(或WindowsNT、Windows98、
WindowsXP)。
⏹计算机安装CCS5000或CCS_v3.1集成仿真环境;
⏹DSPC5509实验板和仿真器各一个;
⏹麦克风、耳机及相应的音频线;
5.2.3实验要求
用CCS集成仿真环境完成建立工程、源文件、命令文件,保存和添加文件到工程,编译、链接、运行和调试等。
使用观察窗口观察寄存器和存储器空间的内容以及输出波形的时域和频域图等。
5.2.4实验步骤
1.实验准备
参照第2章(如使用的仿真器不同,请参照其它相关资料)对CCS硬仿真进行设置;
在断电下将仿真器和目标板相连,将仿真器和计算机相连;
将音频线连接,一端接到目标板的音频输入端J6,另一端可以接电脑声卡输出或别的音频输出端;
将麦克风接到麦克输入端子J5;
将耳机线接到耳机输出端子J7;
给目标板供上电,启动CCS,使用CCS连接仿真器。
2.新建立工程和相应的源文件、命令文件
新建五个汇编源文件和一个命令文件,并把这六个文件添加到工程,分别输入相应的内容,如图5-5所示。
图5-5
3.编译工程
编译过程中如有错误,修改错误,编译成功后,装载输出文件。
4.全速运行程序
全速运行程序。
使用电脑播放器播放音乐,戴上耳机,可以听到音乐和麦克风的声音。
5.观察音频信号的时序图
从CCSView观察窗打开图形属性对话框,如图5-6所示,参照其对话框进行相应地修改,修改好后点击OK确认,则可以看到如图5-7所示的波形图,图形上半部分为左声道声音的波形,下半部分为右声道声音的波形,可以暂停观察某一时刻的波形。
图5-6图形属性对话框
图5-7图形观察窗口中的左、右声道声音波形
5.2.5程序清单参考
1.主程序:
.mmregs
.def_c_int00
.defdata_w_r
.refsdram_init
.refi2c_init
.refi2c_disable
.refi2c_write
.refi2c_read
.refclkmd_init
.refaic23init
mcbsp0_pdp.set2800h/128
drr2.set0h
drr1.set1h
dxr2.set2h
dxr1.set3h
spcr2.set4h
spcr1.set5h
rcr2.set6h
rcr1.set7h
xcr2.set8h
xcr1.set9h
srgr2.set0ah
srgr1.set0bh
mcr2.set0ch
mcr1.set0dh
rcera.set0eh
rcerb.set0fh
xcera.set10h
xcerb.set11h
pcr.set12h
pcerc.set13h
pcerd.set14h
xcerc.set15h
xcerd.set16h
rcere.set17h
rcerf.set18h
xcere.set19h
xcerf.set1ah
rcerg.set1bh
rcerh.set1ch
xcerg.set1dh
xcerh.set1eh
spcr1_rrdy.set02h
length.set256
.bssdata_w_r,2
.bssleft,512
.bssright,512
STACK.usect"
.stack"
200h
SYSSTACK.usect"
.sysstack"
200h
.sect"
.vectors"
rsv:
;
resetvector
B_c_int00;
branchtoCentrypoint
NOP
.align8
.text
_c_int00:
amov#0,xdp
amov#STACK+100h,xsp
amov#STACK+200h,xssp
;
initinterupt
bsetintm;
colseinterupt
mov#1,@ivpd
mov#1,@ivph
mov#00h,@ier0;
mov#00h,@dbier0
mov#0,@ier1
mov#0ffffh,@ifr0;
mov#0ffffh,@ifr1;
callsdram_init
callclkmd_init
calli2c_init
callaic23init
callmcbsp0_init
mov#mcbsp0_pdp,pdp
wait_rx:
btst#spcr1_rrdy,port(@spcr1),tc1
bccwait_rx,!
tc1;
tc1=0,wait
movport(@drr2),ac1
movport(@drr1),ac0
movac0,port(@dxr1)
movac1,port(@dxr2)
amov#left+length-1,xar6
rpt#length-1
delay*ar6-
amov#left,xar6
movac1,*ar6
amov#right+length-1,xar7
delay*ar7-
amov#right,xar7
movac0,*ar7
bwait_rx
ends:
b$
mcbsp0_init:
slavemode
amov#0,xdp
mov#mcbsp0_pdp,pdp
mov#0,port(@spcr1);
PuttheMCBSP0inrese
mov#0,port(@spcr2)
mov#0a0h,port(@xcr1);
Configframeparameters32bit
mov#0h,port(@xcr2);
singlephase,nodelay
mov#0a0h,port(@rcr1);
mov#0h,port(@rcr2);
Framesyncisactivehigh,
mov#03h,port(@pcr);
dataclockedonrisingedgeofclkx
mov#01h,port(@spcr1);
outofreset
mov#01h,port(@spcr2)
ret
.end
2.时钟模式寄存器CLKMD初始化程序:
.defpllmult
.defclkmd_init
.mmregs
clkmd.set0x1c00
clk_in.set12
cpu_clk.set144
pllmult.setcpu_clk*2/clk_in;
pllmult<
=31
ress.set0<
<
iai.set0b<
iob.set1b<
test.set0b<
pll_mult.set00000b<
pll_div.set01b<
5;
Divideby2
pll_enable.set0b<
bypass_div.set00b<
breakln.set0b<
lock_b.set0b<
k_clkmd.setress|iai|iob|test|pll_mult|pll_div|pll_enable|bypass_div|breakln|lock_b
.text
clkmd_init:
amov#clkmd,xar1
movport(*ar1),ac0
and#0ffefh,ac0;
pll_enable=0
movac0,port(*ar1)
loop1:
movport(*ar1),ar0;
readclkmd
and#1,ar0;
bccloop1,ar0!
=#0;
lock_b=0?
mov#pllmult*128,ac0
mov#31*128,ac1;
ifpllmult>
31,plmult=31
minac1,ac0
or#k_clkmd,ac0
or#10h,ac0;
pll_enable=1
rpt#30000
nop_16
nop
loop2:
bccloop2,ar0!
=#1;
3.C5509I2C接口初始化程序
.defi2c_init
.defi2c_disable
.defi2c_write
.defi2c_read
.refpllmult
icoar.set0x3c00
icimr.set0x3c01
icstr.set0x3c02
icclkl.set0x3c03
icclkh.set0x3c04
iccnt.set0x3c05
icdrr.set0x3c06
icsar.set0x3c07
icdxr.set0x3c08
icmdr.set0x3c09
icivr.set0x3c0a
icgpio.set0x3c0b
icpsc.set0x3c0c
bitofi2cmoderegister
icmdr_free.set14
icmdr_stt.set13
icmdr_idleen.set12
icmdr_stp.set11
icmdr_mst.set10
icmdr_trx.set9
icmdr_xa.set8
icmdr_rm.set7
icmdr_dlb.set6
icmdr_irs.set5
icmdr_stb.set4
icmdr_fdf.set3
icmdr_bc_mask.set0
bitofi2cstatusregister
icstr_nacksnt.set13
icstr_bb.set12
icstr_rsfull.set11
icstr_xsmt.set10
icstr_aas.set9
icstr_ad0.set8
icstr_res2.set7
icstr_res1.set6
icstr_res0.set5
icstr_xrdy.set4
icstr_rrdy.set3
icstr_ardy.set2
icstr_nack.set1
icstr_al.set0
icoar_oaddr.set0x007f
.text
i2c_init:
mov#icoar/128,pdp
mov#0h,port(@icmdr);
clearicmdr,
mov#0,port(icimr);
disableallinterupt
;
moduleclockfrequncy=cpu_clk/(ipsc+1)
mov#pllmult,ar0
mov#31,ar1;
minar1,ar0
movar0,port(@icpsc)
masterclockfrequeny=moduleclockfrequnecy/((icclkl+d)+(icclkh+d))
mov#10,port(@icclkl)
mov#10,port(@icclkh)
mov#icoar_oaddr,port(@icoar)
icmdr_irs=1,icmdr_mst=1,
TakeI2Ccontrolleroutofreset,putinmastermode
movport(@icmdr),ac0
or#1<
#icmdr_irs,ac0
#icmdr_mst,ac0
movac0,port(@icmdr)
i2c_disable:
PutI2Ccontrollerinreset
mov#icoar/128,pdp
movport(@icmdr),ac0
mov#1<
#icmdr_irs,ac1
negac1
andac1,ac0
movac0,port(@icmdr);
i2c_write:
writedatatoslavedevice
ar0isstoredcounterofdata
ar1isstoredfirstdataaddress,
ar2isstoredslaveaddress
movar0,port(@iccnt)
addar1,ar0;
ar0pointtotheend
movar2,port(@icsar);
slavedeviceaddress
amov#icdxr,xar3
bset#icmdr_stt,ac0;
startbit=1
bset#icmdr_stp,ac0;
stopbit=1
bset#icmdr_trx,ac0;
transmittermodebit=1,transmittermode
tx_data:
mov*ar1+,port(*ar3)
wait_tx:
btst#icstr_xrdy,port(@icstr),tc1
bccwait_tx,!
cmpar0!
=ar1,tc1
bcctx_data,tc1
i2c_read:
readdatatoslavedevice
amov#icdrr,xar3
bclr#icmdr_trx,ac0;
transmittermodebit=0,receivemode
read_data:
movport(*ar3),*ar1+
wait_read:
btst#icstr_xrdy,port(@icstr),tc1
bccwait_read,!
bccread_data,tc1
4.aic23初始化程序
.defaic23init
.refi2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 芯片 TLV320AIC23 应用 理工