




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十四章数字音频信号(I2S)介绍和S3C2410的I2S控制
数字音频信号(I2S)介绍数字音频信号是相对模拟音频信号来说的。我们知道声音的本质是波,人能听到的声音的频率在0.02~20kHz之间。数字音频信号是对模拟信号的一种量化(如图14-1),典型方法是对时间坐标按相等的时间间隔做采样,对振幅做量化。单位时间内的采样次数称为采样频率。这样一段声波就可以被数字化后变成一串数值,每个数值对应相应抽样点的振幅值,按顺序将这些数字排列起来就是数字音频信号了。这是ADC(模拟-数字转换)过程,DAC(数字-模拟转换)过程相反,将连续的数字按采样时候的频率顺序转换成对应的电压。音频ADC/DAC通俗一点来讲就是录音(音频ADC)和放音(音频DAC)。放音是数字音频信号转换成模拟音频信号,以驱动耳机、功放等模拟音响设备,而录音则是要将麦克风等产生的模拟音频信号转换成数字音频信号,并最终转换成计算机可以处理的通用音频文件格式。第十四章数字音频信号(I2S)介绍和S3C2410的I2S1I2S总线是近年出现的一种面向多媒体计算机(MultimediaPC)的音频总线,该总线专门用于音频设备之间的数据传输,为数字立体声提供一个连接至标准编码解码器的总线。S3C2410内置一个I2S总线控制器,该控制器实现了到一个外部8/16位立体声音频CODECIC的接口。支持I2S总线数据格式和MSB-justified数据格式。此控制器包含FIFO,支持DMA传输模式。I2S总线控制器结构如图14-2所示:图14-1模拟音频信号数字化I2S总线是近年出现的一种面向多媒体计算机(Multimed2其中:•两个5bit预除器(IPSR)。一个(IPSR_A)用于产生I2S总线接口的主时钟,另外一个(IPSR_B)用作外部CODEC时钟产生器。•十六字节FIFO。在发送数据时数据被写进TXFIFO,在接收数据时数据从RXFIFO中读取。•主IISCLK产生器(SCLKG):在主模式,由主时钟产生串行移位时钟。•通道产生器和状态寄存器(CHNC):IISCLK和IISLRCK由通道状态寄存器产生并控制。•16bit移位寄存器(SFTR):在发送数据时,并行数据经由SFTR变成串行数据输出,在接收数据时,串行数据由SFTR转变成并行数据。UDA1341是飞利浦公司的一款经济型音频CODEC,用于实现模拟音频信号的采集(音频AD)和数字音频信号的模拟输出(DA),并通过I2S数字音频接口,实现音频信号的数字化处理。图14-2I2S总线控制器结构图其中:图14-2I2S总线控制器结构图314.2I2S控制寄存器S3C2410I2S相关的寄存器包括I2S控制寄存器IISCON,I2S模式寄存器IISMOD和I2S分频寄存器IISPSR。I2S控制寄存器及其各位的定义如表14-1和表14-2所列。表14-1I2S控制寄存器14.2I2S控制寄存器表14-1I2S控制寄存器4表14-2I2S控制寄存器IISCON各位的定义表14-2I2S控制寄存器IISCON各位的定义5表14-4I2S模式寄存器IISMOD各位的定义I2S模式寄存器及其各位的定义如表14-3和表14-4所列。表14-4I2S模式寄存器IISMOD各位的定义I2S6I2S分频寄存器及其各位的定义如表14-5和表14-6所列。表14-6I2S分频寄存器IISPSR各位的定义I2S分频寄存器及其各位的定义如表14-5和表14-6所列。714.3WAV声音格式文件WAV声音格式文件是Windows环境下的一种常用音频文件格式,它依循着一种称为“资源互换文件格式”(ResourcesInterchangeFileFormal)的结构,简称RIFF。RIFF可以看做是一种树状结构,其基本构成单位为“块”(chunk),犹如树状结构中的节点,每个chunk由“辨别码”、“数据大小”及“数据”所组成。WAV为WAVEFORM(波形)的缩写。“RIFE”的格式辨别码为“WAVE”。整个文件由两个chunk所组成:辨别码及“Data”。在“fmt”chunk下包含了一个PCMWAVEFORMAT数据结构,在其之后是原始声音的采样数据,这些数据是可以直接送到IIS总线的数字音频信号。一个典型的WAV格式文件结构如图14-3所示。14.3WAV声音格式文件8它包含8字节RIFF头、4字节数据类型“WAVE”、0x18字节的“fmt”chunk和4字节数据“data”chunk。因此,WAV文件中从下式中的sizeoff开始的四个字节表示声音数据的大小,dataoff开始的位置为具体的声音数据。sizeoff=0x8+0x4+0x18+0x4dataoff=0x8+0x4+0x18+0x8图14-3典型的WAV格式文件结构图它包含8字节RIFF头、4字节数据类型“WAVE”、0x18914.4I2S控制程序编写1,系统初始化I2S时钟从系统时钟分频得到,由于音频比系统时钟频率低很多,必须对系统时钟进行适当的降频处理,下面的代码降系统PCLK到33MHx,然后对串口进行初始化。ChangeClockDivider(1,1)://1:2:4ChangeMPllValue(Ox96,0x5,0x1);//FCLK=135.428571MHz(PCLK=33.857142MHz)Uart_Init(33857142,115200);I2S用到的端口有G和E,所以使用这些端口前要把这些端口状态保存起来,使用完毕再恢复这些端口原状态。save_G=rGPGCON;save_E=rGPECON;save_PG=rGPGUP;save_PE=rGPEUP;14.4I2S控制程序编写10I2S可以采用DMA中断方式进行语音录音和播放,因此需要设置DMA中断向量。pISR_DMA2=(unsigned)DMA2_Done;然后获取语音数据及其大小以及采样频率。其中__IIS_WAV__是一个数组,它定义在iis_wave.h文件中,它是从一个完整的wav文件转换来的,因此,从中可以获得采样数据大小以及采样频率等信息,其中采样频率位于fmtchunk的第0x0c个字节开始的四个字节中。Buf=(unsignedchar*)__IIS_WAV__;size=*((Buf)+0x28)|*((buf)+0x29)<<8|*((buf)+0x2a)<<16|*((buf)+0x2b)<<24;fs=*((Buf)+0x28)|*((buf)+0x29)<<8|*((buf)+0x2a)<<16|*((buf)+0x2b)<<24;I2S可以采用DMA中断方式进行语音录音和播放,因此需要设置112,播音程序编写:首先初始化UDA1341,设置为播音模式。Init1341(PLAY);接着进行DMA初始化。//DMA2初始化rDISRC2=(int)(buf+0x2c);rDISRCC2=(0<<1)+(0<<0);//源地址位于系统总线(AHB),地址递增rDIDST2=((U32)IISFIFO);//IISFIFOrDIDSTC2=(1<<1)+(1<<0);//目的地址位于外设总线(APB),地址固定rDCON2=(1<<31)+(1<<30)+(1<<29)+(1<<28)+(1<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+(size/4);//101000001001xxxxxxxxxxxxxxxxxxxx2,播音程序编写:12//Handshake[31],Sync,PCLK[30],CURR_TC,Interrupt,Request[29],Single,Tx[28],Single,service//I2SSD0[26:24],DMAsourceselected[23],Auto-reload[22],Half-word[21:20],size/2[19:0]rDMASKTRIG2=(0<<2)+(1<<1)+(0<<0);//No-stop[2],DMA2channelOn[1],No-swtrigger[0]然后I2S初始化并启动I2S功能。//IISInitializeif(fs==44100)//11.2896MHz(256fs)rIISPSR=(2<<5)+2;//PrescalerA,B=2<-FCLK135.4752MHz(1:2:4)else//fs=22050,5.6448MHz(256fs)rIISPSR=(5<<5)+5;//PrescalerA,B=5<-FCLK135.4752MHz(1:2:4)//Handshake[31],Sync,PCLK[30],13rIISCON=(1<<5)+(1<<2)+(1<<1);//TxDMAenable[5],Rxidle[2],Prescaler,enable[1]//Mastermode[8],Txmode[7:6],LowforLeftChannel[5],IISformat[4],16bitch.[3],CDCLK//256fs[2].IISCLK32fs[1:0]rIISMOD=(0<<8)+(2<<6)+(0<<5)+(0<<4)+(1<<3)+(0<<2)+(1<<0);rIISFC0N=(1<<15)+(l<<l3);//TxDMA,TxFTFO-->startpiling…//IISTxStartrIISCON|=0x1;//I2S接口启动rINTMSK&=~(BIT_DMA2);//取消DMA2中断屏蔽,等播放完毕后DMA2中断rIISCON=(1<<5)+(1<<2)+(1<<1);14I2S启动后,将来用DMA中断方式播放语音数据,播放完毕后将引发DMA2中断,在其中断处理函数中将dma2_done设置为非零,因此,在主程序中可以通过判断dma2_done是否为0决定播放是否结束:dma2_done=0;while(dma2_done==0)Delay(1);dma2_done=0;PRINTF(“播放结束\n”);语音播放结束,通知I2S,并恢复寄存器设置,关闭中断并将时钟恢复。//IISTxStopDelay(10);//forendofH/WTxrIISCON=0x0;//I2SInterfacestoprDMASKTRIG2=(1<<2);//DMA2stoprIISFCON=0x0;sine=0;I2S启动后,将来用DMA中断方式播放语音数据,播放完毕后将15rGPGCON=save_G;rGPECON=save_E;rGPGUP=save_PG;rGPEUP=save_PE;rINTMSK|=(BIT_DMA2);ChangeMPllValue(0xa1,0x3,0x1);//FCLK=202.8MHzUart_Init(0,115200);mute=1;}rGPGCON=save_G;163,录音程序编写:录音程序在初始化等动作上与放音类似,代码如下所示:voidRecord_Iis(void){unsignedintsave_G,save_E,save_PG,save_PE;Uart_TxEmpty(0):ChangeClockDivider(1,1);//1:2:4ChangeMP11Value(0x96,0x5,0x1);//FCLK=135428571Hz,PCLK=3.385714MHzUart_Init(33857142,115200);PRINTF(“----------录音测试---------\n”);PRINTF("[1]请接上耳机和麦克风\n");save_G=rGPGCON;save_E=rGPECON;save_P}=rGPGUP;save_PG=rGPEUP;IIS_portSetting();3,录音程序编写:17录制的声音数据保存与rec_buf中,录制长度为REC_LEN://RecordBufinitialize,Non-cacheablearea=0x31000000~0x33feffffrec_buf=(unsignedshort*)0x31000000;pISR_BMA2=(unsigned}DMA2_Rec_Dane;rINTMSK&=~(BIT_DMA2);Init1341(RECORD);//----DMA2InitializerDISRCC2=(1<<1)+(1<<0};//APB,FixrDISRC2=((U32)IISFIF0);//IISFIF0rDIDSTC2=(0<<1)+(0<<0)//PHB,IncrementRdidst2=(int}rec_buf;//0x31000000~
录制的声音数据保存与rec_buf中,录制长度为REC_L18rDCON2=(1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+REC_LEN;//Handshake,syncPCLK,TCint,singletx,singleservice,12SSDI,I2SRxrequest,//Off-reload,half-word,0x50000halfword.rDMASKTRIG2=(0<<2)+(1<<1)+0;//No-stop,DMA2channelon,No-swtrigger,//IISTnitialize,Master,Rx,L-ch=low,IIS,l6bitch,CDCLK=256fs,IISCLrDCON2=19rIISMOD=(0<<8)+(1<<6)+(1<<5)+(0<<4)+(1<<3)+(0<<2)+(1<<0);rIISPSR=(2<<5)+2://Prescaler_A/B=2<-FCLK,135.4752MHz(1:2:4),11.2896MHz(256fs),44.lKHzrIISCON=(0<<5)+(1<<4)+(1<<3)+(0<<2)+(1<<1);//TxDMAdisable,RxDMAenable,Txidle,Rxnotidle,prescalerenable,stoprIISFCON=(1<<14)+(1<<12);//RxDMA,RxFIF0一>startpiling…开始录音:PRINTF("[2]开始录音﹍\n");//RxstartrIISCON∣=0xl;录音完毕将引发DMA2中断,如下代码等待录音结束:
rIISMOD=(0<<8)+(1<<6)+(1<<5)+20While(!Rec_Done)Delay(1);rINTMSK∣=BIT_DMA2;Rec_Done=0;PRINTF(“录音完毕\n”);//IISStopDelay(10);//ForendofH/WRxrIISCON=0x0;//IISstoprDMASKTRIG2=(1<<2);//DMA2stoprIISFCON=0x0;//ForFIF0flushWhile(!Rec_Done)Delay(1);21第十四章习题和练习1,简单回答什么是数字音频的采样频率和采样精度?数字音频的编码有几种?数字音频控制寄存器有几个?各有什么作用?简单说明音频芯片UDA1341的使用。IIS使用系统时钟为什么要降频?IIS使用系统哪几个I/O口?IIS使用DMA中断,如何设置DMA中断向量?如何进行DMA初始化?如何进行IIS初始化和使能IIS?10,仔细阅读例子程序,学会IIS录音和放音程序编写。第十四章习题和练习22第十四章数字音频信号(I2S)介绍和S3C2410的I2S控制
数字音频信号(I2S)介绍数字音频信号是相对模拟音频信号来说的。我们知道声音的本质是波,人能听到的声音的频率在0.02~20kHz之间。数字音频信号是对模拟信号的一种量化(如图14-1),典型方法是对时间坐标按相等的时间间隔做采样,对振幅做量化。单位时间内的采样次数称为采样频率。这样一段声波就可以被数字化后变成一串数值,每个数值对应相应抽样点的振幅值,按顺序将这些数字排列起来就是数字音频信号了。这是ADC(模拟-数字转换)过程,DAC(数字-模拟转换)过程相反,将连续的数字按采样时候的频率顺序转换成对应的电压。音频ADC/DAC通俗一点来讲就是录音(音频ADC)和放音(音频DAC)。放音是数字音频信号转换成模拟音频信号,以驱动耳机、功放等模拟音响设备,而录音则是要将麦克风等产生的模拟音频信号转换成数字音频信号,并最终转换成计算机可以处理的通用音频文件格式。第十四章数字音频信号(I2S)介绍和S3C2410的I2S23I2S总线是近年出现的一种面向多媒体计算机(MultimediaPC)的音频总线,该总线专门用于音频设备之间的数据传输,为数字立体声提供一个连接至标准编码解码器的总线。S3C2410内置一个I2S总线控制器,该控制器实现了到一个外部8/16位立体声音频CODECIC的接口。支持I2S总线数据格式和MSB-justified数据格式。此控制器包含FIFO,支持DMA传输模式。I2S总线控制器结构如图14-2所示:图14-1模拟音频信号数字化I2S总线是近年出现的一种面向多媒体计算机(Multimed24其中:•两个5bit预除器(IPSR)。一个(IPSR_A)用于产生I2S总线接口的主时钟,另外一个(IPSR_B)用作外部CODEC时钟产生器。•十六字节FIFO。在发送数据时数据被写进TXFIFO,在接收数据时数据从RXFIFO中读取。•主IISCLK产生器(SCLKG):在主模式,由主时钟产生串行移位时钟。•通道产生器和状态寄存器(CHNC):IISCLK和IISLRCK由通道状态寄存器产生并控制。•16bit移位寄存器(SFTR):在发送数据时,并行数据经由SFTR变成串行数据输出,在接收数据时,串行数据由SFTR转变成并行数据。UDA1341是飞利浦公司的一款经济型音频CODEC,用于实现模拟音频信号的采集(音频AD)和数字音频信号的模拟输出(DA),并通过I2S数字音频接口,实现音频信号的数字化处理。图14-2I2S总线控制器结构图其中:图14-2I2S总线控制器结构图2514.2I2S控制寄存器S3C2410I2S相关的寄存器包括I2S控制寄存器IISCON,I2S模式寄存器IISMOD和I2S分频寄存器IISPSR。I2S控制寄存器及其各位的定义如表14-1和表14-2所列。表14-1I2S控制寄存器14.2I2S控制寄存器表14-1I2S控制寄存器26表14-2I2S控制寄存器IISCON各位的定义表14-2I2S控制寄存器IISCON各位的定义27表14-4I2S模式寄存器IISMOD各位的定义I2S模式寄存器及其各位的定义如表14-3和表14-4所列。表14-4I2S模式寄存器IISMOD各位的定义I2S28I2S分频寄存器及其各位的定义如表14-5和表14-6所列。表14-6I2S分频寄存器IISPSR各位的定义I2S分频寄存器及其各位的定义如表14-5和表14-6所列。2914.3WAV声音格式文件WAV声音格式文件是Windows环境下的一种常用音频文件格式,它依循着一种称为“资源互换文件格式”(ResourcesInterchangeFileFormal)的结构,简称RIFF。RIFF可以看做是一种树状结构,其基本构成单位为“块”(chunk),犹如树状结构中的节点,每个chunk由“辨别码”、“数据大小”及“数据”所组成。WAV为WAVEFORM(波形)的缩写。“RIFE”的格式辨别码为“WAVE”。整个文件由两个chunk所组成:辨别码及“Data”。在“fmt”chunk下包含了一个PCMWAVEFORMAT数据结构,在其之后是原始声音的采样数据,这些数据是可以直接送到IIS总线的数字音频信号。一个典型的WAV格式文件结构如图14-3所示。14.3WAV声音格式文件30它包含8字节RIFF头、4字节数据类型“WAVE”、0x18字节的“fmt”chunk和4字节数据“data”chunk。因此,WAV文件中从下式中的sizeoff开始的四个字节表示声音数据的大小,dataoff开始的位置为具体的声音数据。sizeoff=0x8+0x4+0x18+0x4dataoff=0x8+0x4+0x18+0x8图14-3典型的WAV格式文件结构图它包含8字节RIFF头、4字节数据类型“WAVE”、0x183114.4I2S控制程序编写1,系统初始化I2S时钟从系统时钟分频得到,由于音频比系统时钟频率低很多,必须对系统时钟进行适当的降频处理,下面的代码降系统PCLK到33MHx,然后对串口进行初始化。ChangeClockDivider(1,1)://1:2:4ChangeMPllValue(Ox96,0x5,0x1);//FCLK=135.428571MHz(PCLK=33.857142MHz)Uart_Init(33857142,115200);I2S用到的端口有G和E,所以使用这些端口前要把这些端口状态保存起来,使用完毕再恢复这些端口原状态。save_G=rGPGCON;save_E=rGPECON;save_PG=rGPGUP;save_PE=rGPEUP;14.4I2S控制程序编写32I2S可以采用DMA中断方式进行语音录音和播放,因此需要设置DMA中断向量。pISR_DMA2=(unsigned)DMA2_Done;然后获取语音数据及其大小以及采样频率。其中__IIS_WAV__是一个数组,它定义在iis_wave.h文件中,它是从一个完整的wav文件转换来的,因此,从中可以获得采样数据大小以及采样频率等信息,其中采样频率位于fmtchunk的第0x0c个字节开始的四个字节中。Buf=(unsignedchar*)__IIS_WAV__;size=*((Buf)+0x28)|*((buf)+0x29)<<8|*((buf)+0x2a)<<16|*((buf)+0x2b)<<24;fs=*((Buf)+0x28)|*((buf)+0x29)<<8|*((buf)+0x2a)<<16|*((buf)+0x2b)<<24;I2S可以采用DMA中断方式进行语音录音和播放,因此需要设置332,播音程序编写:首先初始化UDA1341,设置为播音模式。Init1341(PLAY);接着进行DMA初始化。//DMA2初始化rDISRC2=(int)(buf+0x2c);rDISRCC2=(0<<1)+(0<<0);//源地址位于系统总线(AHB),地址递增rDIDST2=((U32)IISFIFO);//IISFIFOrDIDSTC2=(1<<1)+(1<<0);//目的地址位于外设总线(APB),地址固定rDCON2=(1<<31)+(1<<30)+(1<<29)+(1<<28)+(1<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+(size/4);//101000001001xxxxxxxxxxxxxxxxxxxx2,播音程序编写:34//Handshake[31],Sync,PCLK[30],CURR_TC,Interrupt,Request[29],Single,Tx[28],Single,service//I2SSD0[26:24],DMAsourceselected[23],Auto-reload[22],Half-word[21:20],size/2[19:0]rDMASKTRIG2=(0<<2)+(1<<1)+(0<<0);//No-stop[2],DMA2channelOn[1],No-swtrigger[0]然后I2S初始化并启动I2S功能。//IISInitializeif(fs==44100)//11.2896MHz(256fs)rIISPSR=(2<<5)+2;//PrescalerA,B=2<-FCLK135.4752MHz(1:2:4)else//fs=22050,5.6448MHz(256fs)rIISPSR=(5<<5)+5;//PrescalerA,B=5<-FCLK135.4752MHz(1:2:4)//Handshake[31],Sync,PCLK[30],35rIISCON=(1<<5)+(1<<2)+(1<<1);//TxDMAenable[5],Rxidle[2],Prescaler,enable[1]//Mastermode[8],Txmode[7:6],LowforLeftChannel[5],IISformat[4],16bitch.[3],CDCLK//256fs[2].IISCLK32fs[1:0]rIISMOD=(0<<8)+(2<<6)+(0<<5)+(0<<4)+(1<<3)+(0<<2)+(1<<0);rIISFC0N=(1<<15)+(l<<l3);//TxDMA,TxFTFO-->startpiling…//IISTxStartrIISCON|=0x1;//I2S接口启动rINTMSK&=~(BIT_DMA2);//取消DMA2中断屏蔽,等播放完毕后DMA2中断rIISCON=(1<<5)+(1<<2)+(1<<1);36I2S启动后,将来用DMA中断方式播放语音数据,播放完毕后将引发DMA2中断,在其中断处理函数中将dma2_done设置为非零,因此,在主程序中可以通过判断dma2_done是否为0决定播放是否结束:dma2_done=0;while(dma2_done==0)Delay(1);dma2_done=0;PRINTF(“播放结束\n”);语音播放结束,通知I2S,并恢复寄存器设置,关闭中断并将时钟恢复。//IISTxStopDelay(10);//forendofH/WTxrIISCON=0x0;//I2SInterfacestoprDMASKTRIG2=(1<<2);//DMA2stoprIISFCON=0x0;sine=0;I2S启动后,将来用DMA中断方式播放语音数据,播放完毕后将37rGPGCON=save_G;rGPECON=save_E;rGPGUP=save_PG;rGPEUP=save_PE;rINTMSK|=(BIT_DMA2);ChangeMPllValue(0xa1,0x3,0x1);//FCLK=202.8MHzUart_Init(0,115200);mute=1;}rGPGCON=save_G;383,录音程序编写:录音程序在初始化等动作上与放音类似,代码如下所示:voidRecord_Iis(void){unsignedintsave_G,save_E,save_PG,save_PE;Uart_TxEmpty(0):ChangeClockDivider(1,1);//1:2:4ChangeMP11Value(0x96,0x5,0x1);//FCLK=135428571Hz,PCLK=3.385714MHzUart_Init(33857142,115200);PRINTF(“----------录音测试---------\n”);PRINTF("[1]请接上耳机和麦克风\n");save_G=rGPGCON;save_E=rGPECON;save_P}=rGPGUP;save_PG=rGPEUP;IIS_portSetting();3,录音程序编写:39录制的声音数据保存与rec_buf中,录制长度为REC_LEN://RecordBufinitialize,Non-cacheablearea=0x31000000~0x33feffffrec_buf=(unsignedshort*)0x31000000;pISR_BMA2=(unsigned}DMA2_Rec_Dane;rINTMSK&=~(BIT_DMA2);Init1341(RECORD);//----DMA2InitializerDISRCC2=(1<<1)+(1<<0};//APB,FixrDISRC2=((U32)IISFIF0);//IISFIF0rDIDSTC2=(0<<1)+(0<<0)//PHB,IncrementRdidst2=(int}rec_buf;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级科技活动组织与引导计划
- 社团发展战略计划
- 可持续发展与财务规划计划
- 小儿辅食知识培训课件
- 企业战略控制概述
- 简单的护理查房
- 静脉输血护理查房
- 锂电池安全知识培训课件
- 第十单元实验活动6:酸、碱的化学性质教学设计-2023-2024学年九年级化学人教版下册
- 腰椎穿刺患者术后护理
- 湖南省邵阳市新宁县2024届中考三模化学试题含解析
- 电力系统光纤通信运行管理规程
- (高清版)TDT 1055-2019 第三次全国国土调查技术规程
- 电影活着展示课件
- 天堂旅行团读书分享
- 室内装潢与装修的危险源辨识与风险评估
- 护理安全警示教育案例完整版
- 医疗保险异地就医登记备案表
- MAXIMO系统介绍课件
- 《雇主责任险》课件
- 烟花爆竹经营安全培训课件
评论
0/150
提交评论