ISD1760语音芯片使用总结_第1页
ISD1760语音芯片使用总结_第2页
ISD1760语音芯片使用总结_第3页
ISD1760语音芯片使用总结_第4页
ISD1760语音芯片使用总结_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、isd1760语音芯片spi使用总结注意:此资料参照前人总结,经自己细心成功调试程序后,修改的文档,做了细致的补充。一、该语咅芯片的使用要仔细分析英文pdf的资料,电路可按中青世纪论坛上而所给的电路搭建,也可按 英文pdf后而所画的电路图焊接。本芯片使用不单纯是一个放音电路,还含有其他的控制,因此程序要仔细 参考。二、试验中采用的是1sd1760语音芯片,采样率为8k时,一共能播放60s的语音,最大地址为oxlef,录 咅实际地址为0x10oxlef,(千万不要以为开始地址为:sos10,结束地址为:e0e10,这样算下来地址 就是:0x7ff=2047,从02047为2048个字节,采样频率

2、为8k即:每个字节就是125ms,125 x 2048个字节=256s, 可是,实际的录音时长为60s,所以是错误的)则最大地址为:0xlef-0xl0=0xldf=479o 479+1=480个字 节;480*125ms =60s,也就是说8k采样率时毎1个地址最小语音长度为125ms,因此如果知道单个语音的长 度,暂时无编程器的时候,也可自己推断每个语音所占的地址长度。三、spi操作时要严格遵守pdf上所给的各项操作,这里不列出。暂时仅给出试验屮遇到的所有问题并如何 解决的。1, 一开始本实验是自己用通用板自己照电路搭建的平台,此电路正确与否可把play管腿和地短路,如果 芯片有语音并且电

3、路功放及外围电路正确的话,此时芯片就会把所有语音全都循环读一遍。接下來把4个spi 口与单片机接通,尝试软件控制。主循环中可设置一个连续播放的程序,上电就循环放音。放音程序没错的 话第一步便成功了!这期间我遇到的问题主要有放不出音,读音浞乱,有杂音。如果放不出音,先检查电路, 程序放出声音应该没出现什么问题。本芯片设置的apc值为oxao和0x04 (第三位设置声音大小),具体对应功能参见中文pdf。 在spi协议总叙述中有一句错误:如图所示5.2 spi协议总述isd1700系列的spi串行接口操作遵照以下协议11. 一个spi处理开始于/ss管脚的下降沿。2. 在一个完整的sh指令传输周期

4、,/ss管脚必须保持低电平。严k的下牌沿从migoff脚愉uh并且3. 数据在sclk的上升4. spi指令操作码包括命令字节,数据字节和地址字节,这决定于1700的指令类型5. 当命令字及地址数据输入到mosi管脚时,同时状态寄存器和当 前行地址信息从miso管脚移出。6. 一个spi处理在/ss变髙后启动。7.在完成一个spi命令的操作后,会启动一个中断信息,并且持续状态寄存器返冋值表在pdf中标志的不太明显,标出是错误的。如卜:lsb:bitobit 1bit 2status reaister 0bit 3bitbif5 x u bit 6msbbit 7cmd err memory f

5、ull power uplsbbit 8a3lsbbit 16dozcmd errlsbbit 24d8?a3lssbit 32bit 9a4bit 17di/memory fullbit 25d9/a4bit 33eominterruptmsbbit 10bit 18bit 19a7a9bit 2bit 15d2zpower upbit 26d3 / eombit 27d10/a5d11 /a6bit 34bit 35cmd err memory full power up eomlsbbit 40a3lsbbit 48bit 41bit 42a5bit 43bit 49bit 50cmd

6、err memory full power upbit 51eomd4zinterruptbit 28d12/a7interruptbit 52interruptd5/aod13za2d15/a10msbbit 39msbbit 47a10msbbit 55sr0第一字节位名称描述7a2当前行地址bit26a1当前行地址bitl5a0当前行地址bho4int当一个操作完成时,该位s1,可被clrjnt命令淸除3eom当检测到eom时此位罝1,可被clrjnt命令清除2pu当芯片在spi模式中上电后,此位置11full此位置1表示存储区己满。芯片不能再录任何信息,除非旧的信息被删除。此位只有遵循

7、独立按键模式的存储体系才有效0cmd_err此位置1表示上一个sn命令无效sri位名称描述7se1当音效1被录入后此位置1,擦除后罝06se2当音效1被录入后此位置1,揀除后置05se3当音效1被录入后此位置1,擦除后罝04se4当音效1被录入后此位置1,擦除后置03rec此位置1表示正在录音2play此位置1表示正在放音1erase此位置1表示正在擦除0rdvrdy=1时表示空闲,可以接收spi命令;rdy=0时为忙,不接受新的命令,但除了reset,clr int, rdstatvs, pd这些指令,当然在rec和play时,也可以接受stop命令当19表5.4.1sr0格式status

8、regisrerl (sri)第字节15a10当前行地址bitlo14a9当前行地址bit913a8当前行地址bh812a7当前行地址bit711a6当前行祕it610a5当前行地址bit59a4当前行地址bit48a3当前行地細表5.4.2測内容说明附件:源代码 .h头文件:#ifndef _isd 17xx_h_ #define _isd17xx_h_if/命令定义#define pu0x01/17xx上电#define stop0x02/停止当前操作#define reset0x03/芯片复位#define clrjnt0x04/清除eom标志和中断信号#define rd_status

9、0x05/返回状态寄存器内容#define rd_play_ptr0x06/在1,2字节返冋状态寄存器信息,2, 3字节返冋放音指针#define pd0x07/芯片下电#define rd_rec_ptr0x08/在1,2字节返回状态寄存器信息,2, 3字节返回录音指针#define devid0x09/读取芯片id号码#define play0x40/从当前地址放音#define rec0x41/从当前地址录音#define erase0x42/擦除当前语音段#define g_erase0x43/擦除芯片所有语音#define rd_apc0x44/返回状态寄存器信息在1,2字节,apc

10、寄存器信息在3字节#define wr_apc 10x45/将d1 l:d0写入apc寄存器#define wr_apc20x65/将d11:do写入apc寄存器,并由d2:d0位控制音量#define wr_nvcfg0x46/将apc内容写入nvcfg#define ld_nvcfg0x47/将nvcfg内容写入apc#define fwd0x48/将放音指针指向下一段语音地址处#define chk.mem0x49/检查环状存储体系#define extclk0x4a/外部时钟使能#define set_play0x80/从起始地址s10:s0放音到结朿地址410土0结朿#define

11、set_rec0x81/从起始地址s10:s0录咅到结束地址e10:e0结來#define set_erase0x82/从起始地址s10:s0擦除到结束地址e10:e0结束/定义除命令外剩余字节个数/经测试,该语音最大地址为:oxlef#define surplus_one_byte1/定义字节个数为4#define s urpl us_two_b yte2/定义字节个数为2#define surplus_three_byte/3/定义字节个数为3/数据类型定义#define ucharunsigned char#define uintunsigned int/spi与mcu引脚连接#defi

12、ne isd1760_ssportb.pbo#define isd1760 sclkportb pb1#define isd1760_mosiportb_pb3#define isd 1760_misoportb_pb5#define enisd1760_ssisd1760_ss=0#define disenisd1760_ssisd1760_ss=l#define isd1760_miso_lisd1760_miso=0#define isd1760_miso_hisd1760_miso=1#define isd1760_mosi_lisd1760_mosi=0#define isd1760

13、_mosi_hisd1760_mosi=1#define isd1760_sclk_lisd1760_sclk=0#define isd 1760 sclk hisd 1760 sclk=1/函数声明volatile uchar isd1760_spio(uchar dat);void isd1760_delay(uint m);void isd1760_ready(void);void isd1760_write_afc2(void);void isd 1760_set_fuction(volatile uchar command,volatile uchar *sr012,volatile

14、 uint *catoneadd,volatile ucharvoice一num);void isd 1760_test(void);void isd 1760_command(volatile uchar command,volatile uchar *sr01,volatile uchar n);#endifc文件:/氺本氺本糸氺承氺承氺:j:氺承氺承氺:j:氺承氺:j:氺:c氺:氺::氺:氺:氺::氺:氺:氺:c氺:氺:氺本氺本氺本氺本氺本氺本氺本氺本氺本氺本氺本氺氺氺氺氺氺氺氺氺氺氺氺氺01¥_研究18017乂_语音芯片:到手即可用<x<x<(«e

15、f> »n<1 *n <1 !> <f<1<f<f<1<f<1<f<f/7> <w 7w <w 7w <w 7w <wt、t、t、t、t、t、t、t、t、t、/*1 *1 *1 *1*1 *1 *1*1*!*!*!*!*!*! *1 *!*! *1 *! *1 *!*! *1 *a» *1 *&» *1t>t>t><t #t% t> <j、<、r、t> 7 、7<tinclude "co

16、nfig.h”/注意此头文件屮要包含向己所用单片机,下而是本人向己的例子:/* * * *岑中岑中岑*岑中岑*岑中岑*岑*岑中岑中岑中岑中岑1 ude "corifia h”在此头文件中将包含所有的头文件名字,以后你只需要调用这个头文件名就可以写 任何有关的c程序的字头文件和子函数c模块#ifndef_config_h_#define_config_h_#include<stdio.h>#include<hidef.h>#include"derivative.h"#includehinit.huinclude"ctrl.h”#in

17、clude"adc.hn#includehnokia_5110.hh#includehisdl7xx.hh#includeinterrupt.h”/start of _config_h/注意本人在此包含丫 isd17xx.h头文件#defineture 1#definefault 0#endif/end of config h!«!*<1*<l.x*.x*x<9>4麝«9> «x> «9>4. <x* «9><1«<t«»r>f<

18、;tw <tw <tw <t> *7»,t* <7»»7»,t* <7» *t« *7* *tw <7» *tw <7» *tw *tw *7» *tw ?<t® <tw rtw *t» rtw <tw t* <7w <te 了,te rjw ? rjw <t® rjw rjw »tw rjw <7w rtw ; rjw ; rjw ; *tw »tw ; »

19、;tw ; »tw *tw ; »tw »tw *tw »tw »tw »tw *tw »tw »tw »tw »tw »tw <7* »tw <t* / *1*1 *& *1 *&» *1* *a» *1 *&» *1 *a» *1 *& *1 *1 *1 *1 *1* *1 *1*1 *1*1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1

20、*1 *1 *1 *!f t> <t% t> <j、#t%<t <tw <tw <tw <tw <tw <tw <t% <tw<v <v <v <v <v<v <v <v tw#t% 7 <、#7% <t> #7 <t% t> <t% t> <t% t> <t% t> <t% t> <t% t> #t% t> #t% t> #t% t> #t% t> t&g

21、t; 7* 名称:void isd1760_delay(uint m)氺氺氺氺氺功能:延时输入:uint m /延时参数 输出:无 返回:无 备注:无<1<x<(«<x<(«<x<(«ef> tf<1 »n <1 !> <f<1<f<1<1<f/7*7w <w 7w <w 7w <w 7w <wt、t>t、t、t、t、t、t、t、t、t、/void isd1760_delay(uint m)uint n,p;for(n =

22、m ; n>0; n) for(p = 0 ; p<100; p+);/ ki £z ki £zk|>k|>f>%w %w%t# k£ %t# <1 %t# <fz%t> £z ki £z ki £z ki £z kiki> kj kj>f,卜 rj%,卜 rj、<j%,:,rj% r:,<、,:,<j%,j,<j*,j,<j*,j,<j*,j,<j*,j,<j*,j、*j*,j,*j*,j,*j*,j、*j*,j,*

23、j*,j、*j* rj、<y* rj、*j* rj、<j* rj、<y* rj、*j* rj,rj、rj、rj% rj、rj、rj,rj、rj、rj、,磨,rj、rjw rj% rj% rj、,卜 rj、,卜 rj、,卜 rj、,卜,、rj% ,、,卜,、rjw ,、rj% ,、,卜 r卜 rj名称:void isd1760_ready(void)功能:芯片spi准备阶段 输入:无输出:无 返回:无 备注:无<1<f ef> 少 少 tf<1<(«<x *1* <(«<x *1* <(«<

24、;x *1* tfif tf»f> <1<1 *f* <f !> <f<1<1<1/t、t、t、t、t、void isd1760_ready(void) disenisd1760_ss; isd1760_sclk_h; isd1760_mosi_l; enisd1760一 ss;/*l*1*a» *1 *&» *1 *&» *1 *& *1 *& *1 *a» *1 *a» *1 *&» *1 *a» *1 *a* *1

25、*a* *1 *a* *1 *a* *1 *a* *1 *a* <1 *a* *1 *a* <1 *a* <1 *a* *1 *a* <1*1*1*1*1*1*1*1*1*1*1*1 *1 *1*1 *1 *1 *1 *1*1 *1 *!« t> <t% t> <j、#t%<t <tw <tw <tw <tw <tw tw tw7 <t%<t%<t% 7 <、7 <、7 <、t> <t% t> <t% t> <t% t> &

26、lt;t% t> <t% t> #t% t> #t% t> #t% t> #t% t>7* 名称:volatile uchar isd 1760_spio(volatile uchar dat)* 功能:写与读一个字节数据* 输入:volatile uchar dat /写入数掘* 输出:volatile uchar dat /读出数据* 返回:无* 备注:无!«!*<1<1<1*<1*«9«9«9«)«<9«9«9.pf<tw <

27、tw <tw <t> *7»,t* <7»»7»,t* <7» *t« *7* *tw <7» *tw <7» *tw *tw *7» *t« *t« *t« *t* <t» : <t» *t* *tw 了 <t» »7w *t» rjw tw »7w *t* <tw *t* »7* : »7w rjw rtw *t* rtw &l

28、t;te 了,te rjw<t® <t* w »tw *t»,了,t* *tw »tw *tw »tw »tw »tw *tw »tw »tw »tw »tw »tw <7* /volatile uchar isd 1760_spio(volatile uchar dat) volatile uchar i;for (i=0; i<8; i+)/将dat字节的8个位数据送到mosi线上isd1760_sclk_l;if(dat&0x01)&qu

29、ot;先将sclk拉低isd1760 mosi h;elseisd1760_mosi_l;左程序dat»= 1;if(isd 1760_miso = 1) dat|=ox8o;isd1760_sclk_h;)isd1760一mosi一l;/mosi和miso信号同时改变数据,但有前后关系如:/sclk来一个上升沿锁存mosi信号/非忙线时mosi要拉低return(dat);/ *1*f <t%#t%<tw <tw <tw <tw <tw <tw <tw#t% 7 <、#7% <t> #7 <t% t> &

30、lt;t% t> <t% t> <t% t> <t% t> <t% t> #t% t> #t% t> #t% t> #t% t>7*名利<:void isd1760_write_apc2(void)功能:设置芯片模拟输入方式:模拟寄存器apc2 输入:无输出:无 返回:无 备注:无氺氺氺氺氺<1<1!«.x*<1«9>:. «x> «9>f<tw <t> <tw <t> <7» *t&

31、#187; <7* <t» <7»<7» *t« <tw <7» *tw 了*tw <7» *tw rtw <tw t* <tw <te rtw te <tw te rjw <t® rjw rjw <jw rjw <tw rtw ; rjw ; rjw ; 了, <7w ; rjw ; »tw *tw ; »tw ; »tw ; »tw *tw »tw »tw »tw

32、 »tw »tw »tw »tw *tw »tw »tw »tw <t« /void isd 1760_write_apc2(void)volatile uchar srol,sroh,sr1; volatile uchar data 14;isd 1760_command(pu,data,surplus_one_b yte);isd1760_ready();srol = isd 1760_spio(wr_apc2); sroh = isd1760_spio(0x47);sri = isd 1760_spio

33、(0x04); disenisd1760一 ss;/spi总线准备好 /发送命令字节/发送数据字节1/发送数据字节2/一个命令完毕/<1 *1*<1 *1*!> <1<1<1<1<1少tv tv tv tv tv tv tv tv tv tv7wuchar名称:isd1760_set_fuction(volatile uchar command,volatileuchar *sr012,volatilevoice一num)* 功能:设置语音具体地址功能,并作用* 输入:uchar command,/具体功能命令* uchar *sr012/寄存器

34、 sro,sri, sr2 数据返冋* uchar voice_num /语音段号* 输出:无* 返无* 备注:无<1 <1 <1 <1 <1 / 7w7w7w7wt、t>t、t、t、t、t、t、t、t、/void isd1760_set_fuction(volatile uchar command,volatile uchar *sr012,volatile uint *catoneadd,volatile uchar voice_num)volatile uint add_st, add_ed;volatile uchar add st h, add s

35、t l,add ed h, add ed l;add_st = catoneaddfvoice_num*21;/提取开始和结束地址add_ed = catoneadd voice_num*2+1 ;add_st_l=(uchar)(add_st&oxooff);add_st_h=(uchar)(add_st»8)&0x00ff);add_ed_l=(uchar)(add_ed&oxooff);add_ed_h=(uchar)(add_ed»8)&0x00ff);isd1760_ready0;sr012f01 = isd 1760_spio(c

36、ommand); sr012l = isd1760_spio(0x00);sr0122 = isd 1760_spio( add_st_l); sr0123= isd 1760_spio( add_st_h);<s10:s8,isd1760 不用sr012f01 = isd 1760_spio( add_ed_l); sr0120 = isd 1760_spio(add_ed_h);<e10:e8,isd1760 不用sr0120 = isd1760_spio(0x00); disenisd1760_ss;/分配开始和结束地址/spi总线准备好/发送录咅命令字节/发送数据字节1/发

37、送数据字节2,放音起始地址低8位5730/发送数据字节3,放咅起始地址高3位/发送数据字节4,放咅结來地址低8位£7土()/发送数裾字节5,放音结束地址低8位/发送数据字节6/麟麟f ,1, rtw rtw rtw rtw rtw rtw rtw rtw rj* rtw rtw rjw rtw rjw rtw rtw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rjw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw

38、 rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw <7w* 名称:isd1760_command(volatile uchar commcind,volatile uchar *sr01,volatile uchar surplus_byte)* 功能:设置语音具体地址功能,并作用* 输入:uchar command,/具体功能命令* uchar *sr01/寄存器sro,sr1数据返回* uchar surplus_byte /除命令外

39、剩余字节个数* 输出:无* 返回:无* 备注:特别注意这个函数delay(loooo);延时时间一定要相当长,给予芯片指针一定的反应时间,否则命 令无效i*i*i*i* *1* 上<t»<t»<t»<t»<t»<t»vv vv<1> %1 <1> %1 1>1>1>1>1>1>1>%£ k1#<1<1k1#/rj rj,rj,rj%,卜,j,卜 rjw,卜,j,卜,j,卜,j,卜 rj* r 卜,j,卜,j,r

40、卜,j,<7、,j,r、,j,<7、,j,*7、,j,*y*,j,*7、,j* *y*,j,*j、,j* *y*,j,*j、,j,*y*,j* rj%,j,rj,j,j、,j,rj,j,j、,j,j,j,rj,j,rj,j,rj,j,rj,j,rj,j,rj,:,rj,j,rj,:,rj,j,rj,j,rj,*3,/void isd1760_command(volatile uchar command,volatile uchar *sr01,volatile uchar surplus_byte) volatile uchar i=0;if(surplu$_hyte>0 &

41、amp;& surplu$_byte<4)isd1760_ready();sr010 = isd 1760_spio(command); while(+i<=surplus一byte)sr01i = isd1760_spio(0x00); disenisd1760_ss;isd 1760delay。0000);)else return;/spi总线准备好 /发送命令字节/发送命令字节/一定注意:延时要足够长#define pu0x01/17xx上电#define stop0x02/停止当前揀作#define reset0x03/芯片复位#define clr.int0x04

42、/清除eom标志和中断信号#define rd_status0x05/返回状态寄存器内容#define rd_play_ptr0x06/在1,2字节返|。|状态寄存器信息,2, 3字节返冋放音指针#define pd0x07/芯片下电#define rd_rec_ptr0x08/在1,2字节返回状态寄存器信息,2, 3字节返回录音指针#define devid0x09/读取芯片id号码#define play0x40/从当前地址放音#define rec0x41/从当前地址录音#define erase0x42/擦除当前语音段#define g_erase0x43/擦除芯片所有语音#defin

43、e rd_apc0x44/返回状态寄存器信息在1,2字节,apc寄存器信息在3字节#define wr.apc 10x45/将<d1 l:d0写入apc寄存器#define wr_apc20x65/将<d1 kdo写入apc寄存器,并由<d2:d0位控制音量#define wr_nvcfg0x46/将afc内容写入nvcfg#define ld_nvcfg0x47/将nvcfg内容写入apc#define fwd0x48/将放咅指针指向下一段语咅地址处#define chk_mem0x49/检查环状存储体系#define extclk0x4a/外部时钟使能#define se

44、t_play0x80/从起始地址<s10:s0放音到结朿地址<e10:e0结朿#define set_rec0x81/从起始地址<s10:s0>录音到结束地a<e10:e0>结束#define set.erase0x82/从起始地址<s10:s0擦除到结來地址<e10:e0结來/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺*氺氺氺氺氺氺氺氺氺氺氺氺2*1*1 *! *1* *! *1* *! *1 *! *1* *! *1 *! *1 *4* *1 *4* *1 *a« *1 *a* *1 *a« *1 *a* *1 *a*

45、*1 *a* *1 *a* *1 *a* *1 *a* *1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1 /#?% <t>#t 7 <t 7 <tt><t>t>#t#t%tw tw tw <v tw<v7 <|% #7 <t% #7 <t% #7 <t% #7 <、7 <t% #7 rt% #7w <t% t> <t% t> <t% t> <t% t> <t% t> <t>,卜 <

46、;t,卜 / *1*1*&» *1 *&» *1 *&» *1 *& *1 *&» *1* *a» *1 *&» *1 *a» *1 *& *1 *|# *1 *|# *1 *|# *1 *|# *1* *|# *1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1 *1 *1 *1 *1*1 *1 *1*!f t> <t% t> <j、#t%<t <tw <tw <tw <tw <tw

47、<tw <t% <tw<v<v<v<v<v<v<v<v tw#t% 7 <、#7% <t> #7 <t% t> <t% t> <t% t> <t% t> <t% t> <t% t> #t% t> #t% t> #t% t> #t% t>t>7名利(:void lsd1760_test(void)功能:调用此函数,单步调试,可以测试语咅的所有段地址 输入:无 输出:无 返回:无* 备注:无<1<1&l

48、t;1«1«.x*£*<l*«9>«f> «x> <f><l«f<tw <t> <tw <t> <7» <t»<t» <7»<7» *t« <t» *t« »7» *t«<7* <tw <t» *tw <7» *tw <t» <tw ? &

49、lt;tw<t» rtw <t» *tw<tw <w rjwrjw ? rtw <t» r7w ? rjw <t» r7w <7w ; rtw ; rtw ; rtw ; <7w 了,; »tw ; »tw »tw ; »tw ; »tw »tw »tw »tw »tw »tw »tw »tw »tw »tw »tw »tw <t* /void isd1760_test(void)/音乐地址存放数组,2个一组,注意其最大存放地址力:0x0lef/volatile uint tone_addu= 0x10,0x3b,0x3c,0x89,0x8a,0xda,0xdb,0x 12d,ox 12e,0x 1 ef;/丄*1*<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论