第6章 嵌入式系统总线接口

合集下载

嵌入式系统中的通信技术

嵌入式系统中的通信技术

嵌入式系统中的通信技术第一章:概述嵌入式系统是一种特殊的计算机系统,它主要用于控制和监测硬件设备,通信技术是嵌入式系统的重要组成部分。

嵌入式系统中的通信技术可以用于系统内部通讯,也可以用于系统与外部设备的通讯。

嵌入式系统中的通信技术包括串口通讯、以太网通讯、CAN总线通讯、SPI总线通讯等。

第二章:串口通讯串口通讯是嵌入式系统中最常见的通信方式,通过串口通讯可以连接MCU与其他外部设备,如电脑、模块等。

串口通讯分为同步串口和异步串口。

异步串口通讯是一种基于字符的通讯方式,在通讯时每个字符间间隔不同的时间,从而实现数据传输。

同步串口通讯是一种更高效的通讯方式,相对于异步串口通讯速率较快,传输距离也更远,但需要更多的硬件支持。

第三章:以太网通讯以太网通讯是一种高速局域网通讯方式,它是嵌入式系统中比较常用的通讯方式。

用以太网通讯可以建立一个TCP/IP协议栈,实现数据的快速传输。

以太网通讯在嵌入式系统属于高级通讯方式,需要较高的硬件支持,并且使用也相当复杂。

但是在需要高速传输数据的应用场景中,是一种非常有效的通讯方式。

第四章:CAN总线通讯CAN总线通讯是一种多主从、多帧类型的通讯方式,它可以在嵌入式系统中实现不同节点之间的通讯。

CAN总线通讯在工业控制、汽车电子、机载系统等领域应用广泛。

CAN总线通讯可以实现高效的数据传输,具有高实时性、高可靠性等优点。

CAN总线通讯的核心是CAN控制器和CAN收发器,需要通过硬件的方式来实现。

第五章:SPI总线通讯SPI总线通讯是一种串行通讯方式,广泛应用于嵌入式系统中。

SPI总线通讯方式具有传输速率快、数据传输稳定可靠等优点,可以与多种不同的外设进行通信。

SPI总线通讯可以使用多主从结构,通过主设备的选择信号实现对从设备的选择,实现多个设备在同一总线上的高效通讯。

第六章:总结嵌入式系统中的通信技术是系统开发中不可或缺的部分,它对于系统的稳定性、可靠性和高效性至关重要。

嵌入式系统-第6章 嵌入式接口技术应用

嵌入式系统-第6章  嵌入式接口技术应用
用户可以通过编程设定LCD控制器中的相关寄存器,来 选择所需的水平、垂直像素数、数据接口的数据线宽度、界 面时序以及刷新率等参数。
15
6.1.1 LCD的控制器
要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器, 而且还需要相应的LCD控制器。 在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式 与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电 路来实现,现在很多的MCU内部都集成了LCD控制器。通过 LCD控制器就可以产生LCD驱动器所需要的控制信号来控制 STN或TFT类的LCD屏。其控制器框图如图6-1所示。本节仅 以STN-LCD控制器为例来介绍。
1/[{(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)}×{(HSPW+1)+( HBPD+1)+(HFPD+1)+(HOZVAL+1)}×{2×(CLKVAL+1)/(HCLK)}]
29
6.1.1 LCD的控制器
STN-LCD控制器操作 1. LCDDMA模块中包含了一个FIFO存储器组。当FIFO寄存器为空或部分
光源
垂直偏光板 玻璃电极
液晶
玻璃电极
水平偏光板
G
S
D
Scan Data
9
TFT LCD的显示方式
Scan Line
ON OFF
OFF OFF
先开启第一行,其余关闭。
TFT 玻璃电极
Data Line
10
OFF ON
OFF
OFF 接着关闭第一行,电压已经固定,所以显示顏色也已 固定。开启第二行,其余仍保持关闭。依此类推,可 完成整个画面之显示。

嵌入式系统原理及接口技术

嵌入式系统原理及接口技术
主流。微控制器的片上外设资源一般比较丰富,适合于控制,
因此称微控制器。
嵌入式微控制器目前的品种和数量最多,比较有代表性的通
用系列包括8051、P51XA、MCS-251、MCS-96/196/296、
C166/167、MC68HC05/11/12/16、68300、数目众多ARM芯片
等。
完整版pt
14
同等重要,甚至有时更为重要。
为了提高系统的实时性,实时操作系统的设计应尽量满足5个条件:
1)必须是多任务系统
2)内核应是可剥夺型
3)任务的切换时间应与系统中的任务数无关并可预知
4)系统提供所有服务所需时间应尽可能短并且可预知
5)中断延迟的时间可预知并尽可能短
完整版pt
18

ARM处理器系列
◆ARM7(V4)
完整版pt
8

目前,无论是嵌入式系统基础器件、开发手段,还是
应用对象,都有了很大变化。无论是未来从事8位、
16位、32位的嵌入式系统应用,都应该了解嵌入式系
统的技术前沿。这些技术前沿体现了嵌入式系统应用
的一些基本观念,它们是:
基于集成开发环境的应用开发、应用系统的用户SoC
设计、操作系统的普遍应用、普遍的网络接入、先进
完整版pt
11

完整版pt
12

FFT(Fast Fourier Transform)快速傅氏变换,
是离散傅氏变换的快速算法,它是根据离散傅氏
变换的奇、偶、虚、实等特性,对离散傅立叶变
换的算法进行改进获得的 。
一般用来计算信号的频谱、功率谱等。
完整版pt
13

嵌入式微控制器又称单片机,嵌入式微控制器一般以某种微

第6章 嵌入式系统总线接口PPT课件

第6章 嵌入式系统总线接口PPT课件

6.1 串行接口
❖ 6.1.1 串行接口基本原理与结构 ❖ 1.串行通信概述 ❖ 常用的数据通信方式有并行通信和串行通信两种。当两台数字设
备之间传输距离较远时,数据往往以串行方式传输。串行通信的 数据是一位一位地进行传输的,在传输中每一位数据都占据一个 固定的时间长度。与并行通信相比,如果n位并行接口传送n位数 据需时间T,则串行传送的时间最少为nT。串行通信具有传输线 少、成本低等优点,特别适合远距离传送。 ❖ ① 串行数据通信模式 ❖ 串行数据通信模式有单工通信、半双工通信和全双工通信3种基 本的通信模式。 ❖ ● 单工通信:数据仅能从设备A到设备B进行单一方向的传输。 ❖ ● 半双工通信:数据可以从设备A到设备B进行传输,也可以从 设备B到设备A进行传输,但不能在同一时刻进行双向传输。 ❖ ● 全双工通信:数据可以在同一时刻从设备A传输到设备B,或 从设备B传输到设备A,即可以同时双向传输。
31.07.2020
嵌入式系统概论
4
❖ ● 波特率 ❖ 传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。例如,
数据传送的速率为120字符/秒,每帧包括10个数据位,则传送波特率为: ❖ 10×120=1200b/s=1200波特 ❖ 每一位的传送时间是波特的倒数,如1/1200=0.833ms。异步通信的波特率的数
值通常为:150、300、600、1200、2400、4800、9600、14400、28800等, 数值成倍数变化。 ❖ ● 校验位 ❖ 在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。对于 偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位 有奇数个“1”。例如数据“00010011”,共有奇数个“1”,所以当接收器要接收 偶数个“1”时(即偶校验时),则校验位就置为“1”,反之,接收器要接收奇数 个“1”时(即奇校验时),则校验位就置为“0”。 ❖ 一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以 外,通信控制器还自动加上停止位,用来指明欲传送字符的结束。停止位通常取 1、1.5或2个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了 错误。 ❖ 在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送 的数据毫无相关的位。如果在传送1个8位的字符时,其校验位、起始位和停止 位都为1个位,则相当于要传送11个位信号,传送效率只有约80%。

嵌入式系统导论课件 Lecture6 嵌入式系统的外围设备和IO接口

嵌入式系统导论课件 Lecture6 嵌入式系统的外围设备和IO接口

8
外围设备

电容式触摸屏特点

对大多数的环境污染物有抵抗力
人体成为回路的一部分,因而漂移现象比较严重
人体戴手套式不起作用 需经常校正
不适用于金属机柜
外界存在电感和磁感的时候,触摸屏失灵
9
外围设备

电阻式触摸屏工作原理
触摸屏拥有两层透明导电 薄膜,膜间保持一定距离, 上层可伸缩 上层膜受外力是压时,上 层膜会触碰下层膜,形成上 下电极导通 利用二维空间的电压计测 量不同位置的电位差,进而 计算(X,Y)值

输入设备


输出设备


扩充设备——储存卡扩展 电源系统

电源管理设备和电池系统
2
外围设备


小型键盘是一种常见的嵌入式系统输入设备 结构:矩阵键盘

16个按键接至4条行输出XO~X3和4条列输入YO~Y3上 节省I/O端口资源
3
外围设备

工作原理

按键按下时某一行与某一列的输入电路之间形成回路


PCMCIA—会员超过300 CF--SanDisk SD--Panasonic MS--Sony
23
外围设备

便携式嵌入式系统的电源

智能型电源管理设备

低电压——5V\3.3V 检测系统需要用电的时间,自动根据需求开关电 源
通过电池系统管理总线(System Management Bus) 和系统进行连通 自动监测电池的剩余电量 根据电量提醒用户需要进行的处理
32
常见I/O接口类型

Can传输数据时有两种模式
显示模式:总线上没有任何数据传输,连接在 总线上的任何一个节点都可以发送数据 隐性模式:当有益节点传输数据时,总线就处 于隐性模式 数据发送以包的形式发送

嵌入式系统中常见的通信接口介绍与实践

嵌入式系统中常见的通信接口介绍与实践

嵌入式系统中常见的通信接口介绍与实践嵌入式系统是一种集成了硬件和软件的计算系统,旨在满足特定应用需求。

通信接口在嵌入式系统中扮演着至关重要的角色,它们允许不同组件之间进行数据传输和交互。

本文将对嵌入式系统中常见的通信接口进行介绍,并提供实际应用实践。

1. 串行通信接口串行通信接口通过逐位传输数据来实现通信。

它在嵌入式系统中非常常见,因为它可以使用少量的引脚来传输大量的数据。

常见的串行通信接口包括RS232、RS485、SPI(串行外设接口)、I2C(双向串行总线)等。

RS232是一种常见的串行通信接口,广泛应用于计算机和外围设备之间的通信。

它使用一对差分信号线进行数据的传输。

实践中,我们可以通过串口连接电脑和嵌入式系统,实现数据的收发和调试。

RS485是一种多点通信标准,可以连接多个设备。

它适用于在远距离传输数据的情况下,可达数千米的传输距离。

在实践中,我们可以使用RS485实现远程传感器的数据采集或远程监控系统的数据传输。

SPI是一种同步串行通信接口,常用于嵌入式系统中的外设和主控制器之间的通信。

它使用四根信号线(主机输入、主机输出、时钟和片选)来实现数据传输。

常见的SPI外设包括存储器芯片、传感器和显示器等。

在实践中,我们可以通过SPI接口读取传感器数据或控制外部设备。

I2C是一种双向串行总线,适用于通过两根信号线(数据线和时钟线)连接多个设备。

它使用地址和数据进行通信,并支持多主机模式。

在嵌入式系统中,我们可以使用I2C总线连接不同的传感器、存储器和其他外设。

实践上,可以使用I2C总线读取温度传感器的数据或与其他设备进行通信。

2. 并行通信接口并行通信接口可以同时传输多个位的数据,它们可以提供更高的传输速率,但需要更多的引脚。

常见的并行通信接口包括ATA(并行ATA)、PCI(周边组件互连)、PCIe(PCI Express)等。

ATA是一种常见的并行通信接口,用于连接存储设备(例如硬盘驱动器)和主机系统。

第6章 嵌入式系统总线接口

第6章 嵌入式系统总线接口
0:禁止;1:使能
11
UART的状态寄存器 UTRSTAT
UTRSTAT
发送缓冲器状 态
接收缓冲器状 态
BIT
[1]
[0]
0:数据空;1:数据非空
0:数据空;1:数据非空
12
(6)UART发送和接收数据的缓冲寄存器 UART0发送缓冲寄存器(UTXH0) UART0接收缓冲寄存器(URXH0)
13
9
接收模式选择
[1:0]
UART FIFO控制寄存器(UFCON)
UFCON的位功能 发送FIFO的触发 条件选择 接收FIFO的触发 条件选择 保留 Tx FIFO复位位
位 [7:6]
描述 00:空;01:4字节;10:8字节;11:12字 节 00:4字节;01:8字节;10:12字节;11: 16字节 保留位 该位在FIFO复位后自动清除。 0:正常;1:Tx FIFO复位
area init,code,readonly import Main entry code32 bl Main b. end
汇编程序init.s
void Main() { int i; Uart_Init(); while(1) { for(i=48;i<58;i++) //0-9 { while(!(UTRSTAT0 &0x2)); //Wait until THR is empty. UTXH0 = i; delay(1000000); } UTXH0 = 13; delay(10); UTXH0 = 10; delay(10);
[5:4]
[3] [2]
Rx FIFO复位位
[1]
该位在FIFO复位后自动清除 0:正常;1:Rx FIFO复位

第六章 32位嵌入式系统常用总线

第六章 32位嵌入式系统常用总线

EBI总线
• 接口信号
– EBI总线根据用途可以分为数据总线、地址总线和 控制总线,数据总线用D0,D1,D2……来表示,地址 总线用A0,A1,A2……来表示,控制总线则根据各个 控制线作用的不同,分别用CS(芯片片选信号)、 CKE(时钟使能)、WR(写控制信号)、OE(输 出使能)等表示 – 多个外设可以共享地址总线和数据总线,通过不同 的CS信号线来选择不同的外设
SPI总线
• 接口信号
该接口一般使用4根信号线:串行时钟线(SCK),主机输 入/从机输出数据线MISO,主机输出/从机输入数据线MOST, 低电平有效的从机选择线SSx(x可为0,1,2……)
SS SS1 CPU 主 机 A/D SS2 SS3 SS4 其他 设备 …… CPU 从 机
SS
EEPROM LCD
– – – – – – – – – SPI总线 I2C总线 UART接口 USB总线 I2S音频总线 SDIO总线 MII(RMII,SMII)总线 CAN总线 LIN总线
I2C总线
• 介绍 I2C(Inter-Integrated Circuit)总线是一种由 PHILIPS公司开发的两线式串行总线,用于连接微控制器 及其外围设备。I2C总线产生于80年代,最初是为音频和 视频设备开发的。 I2C总线最主要的优点是其简单性和有效性。由于接 口简单,I2C总线占用的空间非常小,减少了电路板的空 间需求和芯片引脚的数量,降低了互联成本。I2C总线的 另一个优点是,它支持多主机(multimastering)模式,任 何能够进行数据发送和接收的设备都可以成为主机。一个 主机能够控制总线上信号的传输和时钟频率。当然,在任 何一个时间只能有一个设备工作于主机模式。 I2C具有完善的总线协议,可以构成多主机系统,在 协议软件的支持下可自动地处理总线任何可能的运行状态。 I2C总线的工作速率在其最新的2.1版本规范中最高可 以达到3.4Mbps
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

与CPU内 核相连
APB 接口
《嵌入式系统设计》
——Uart行控制寄存器
UTXHn
TxD0
Shifter
ULCONn URXHn
UTRSTATn
RxD0
Shifter
UFCNn
位 功能
7 保留
6 红外/正常模式选择
字长:这些位控制数据长度。
00:5位字符长度; 10:7位字符长度;
[5 : 3]
奇偶校验模式选 择
6.1.1 串行接口基本原理与结构 1.串行通信概述
《嵌入式系统设计》
常用的数据通信方式有并行通信和串行通信 两种。当两台数字设备之间传输距离较远时, 数据往往以串行方式传输。串行通信具有传输 线少、成本低等优点,特别适合远距离传送。
① 串行数据通信模式 串行数据通信模式有单工通信、半双工通信
和全双工通信3种基本的通信模式。
第6章 嵌入式系统总线接口
《嵌入式系统设计》
嵌入式系统设计
—基于ARM9微处理器S3C2410A
第6章 嵌入式系统总线接口
第6章 嵌入式系统总线接口
6.1 串行(Uart)接口
《嵌入式系统设计》
➢ 掌握ARM的Uart工作原理
➢ 掌握Uart寄存器配置方法
➢ 学习编程实现ARM的UART通讯
第6章 嵌入式系统总线接口
称之为波特。异步通信的波特率的数值通常为:150、300、 600、1200、2400、4800、9600、115200、14400、 28800等,数值成倍数变化。
● 校验位 在一个有8位的字节(byte)中,其中必有奇数个或偶数个的
“1”状态位。
第6章 嵌入式系统总线接口
《嵌入式系统设计》
异步串行通信中的字符传送格式
➢ 串口收发数据
《嵌入式系统设计》
发送:将待发送数据写入UTXH0寄存器,然后通过 读取UTRSTAT0寄存器的值判断数据是否发送完成;
接收:通过读取UTRSTAT0寄存器的值判断是否接 收到数据,如果接收到数据,则可以从URXH0寄存 器中读出数据。
描述 描述
复位值 未定义
复位值 未定义
第6章 嵌入式系统总线接口
UART相关寄存器描述
《嵌入式系统设计》
——Uart波特率系数寄存器
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
UTXHn
TxD0
Shifter
ULCONn URXHn
UTRSTATn
RxD0
Shifter
UFCNn
名称
UBRDIV[15 :0]
RxD0
SUh0iRfteSrR
UFCONn
位 功能
2 发送器空状态位
1 发送缓冲器空状态位
0 接收缓冲器状态位
发送缓冲器空状态位:
0:未空; 1:空
第6章 嵌入式系统总线接口
UART相关寄存器描述
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
《嵌入式系统设计》
——Uart状态寄存器
UTXHn
Shifter
UFCNn
位 功能
7 保留
6 红外/正常模式选择
[5 : 3]
奇偶校验模式选 择
2 停止位
[1 :0] 字长
停止位:控制每帧数据包含的停止位个数。
0:1个停止位;
1:2个停止位;
第6章 嵌入式系统总线接口
UART相关寄存器描述
UCONn UBRDIVn
与CPU内 核相连
APB 接口
《嵌入式系统设计》
第6章 嵌入式系统总线接口
UART内部结构示意图-以Uart0为例
中断使能及 模式选择
《嵌入式系统设计》
波特率设置
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
UTXHn
TxD0
Shifter
ULCONn URXHn
UTRSTATn
RxD0
Shifter
UUFFCCONNnn
FIFO控制
UART格式设置
第6章 嵌入式系统总线接口
UART相关寄存器描述
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
《嵌入式系统设计》
——Uart状态寄存器
UTXHn
TxD0
Shifter
ULCONn UUR0XRHBnR
UTRSTATn
RxD0
SUh0iRfteSrR
UFCONn
位 功能
2 发送器空状态位
1 发送缓冲器空状态位
CPU内核通过APB接口对UART的寄存器进行读写访问
2.发送数据的通道
第6章 嵌入式系统总线接口
UART内部结构示意图
《嵌入式系统设计》
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
UTXHn
TxD0
Shifter
ULCONn UUR0XRHBnR
UTRSTATn
RxD0
SUh0iRfteSrR
RS232标准包括一个主通道和一个辅助通道,在 多数情况下主要使用主通道,即RXD、TXD、 GND信号;
第6章 嵌入式系统总线接口
《嵌入式系统设计》
DB-2பைடு நூலகம்/DB-9引脚定义
第6章 嵌入式系统总线接口
《嵌入式系统设计》
RS-232C接口通信的两种基本连接方式
第6章 嵌入式系统总线接口
3.电平转换
TTL电平:S3C2410A使用TTL电平
《嵌入式系统设计》
RS232电平:双极性信号逻辑电平, 它是一套负逻辑定义 ➢ -3V到-25V之间的电平表示逻辑“1” ➢ +3V到+25V之间的电平表示逻辑“0”
电平转换电路:常用专门的RS-232接口芯片,如 SP3232、SP3220等,在TTL电平和RS-232电平之间实现 相互转换。
第6章 嵌入式系统总线接口
《嵌入式系统设计》
② 异步串行通信方式
● 字符的格式 每个字符传送时,必须前面加一个起始位,后面加上1、1.5
或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面 1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最 后一位停止位,共10位。
● 波特率 传送数据位的速率称为波特率,用位/秒(bit/s)来表示,
UFCONn
接收缓存 接收移位寄存器
3.接收数据的通道
第6章 嵌入式系统总线接口
UART内部结构示意图
中断标志
《嵌入式系统设计》
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
UTXHn
TxD0
Shifter
ULCONn UUR0XRHBnR
UTRSTATn
RxD0
SUh0iRfteSrR
UFCONn
TxD0
Shifter
ULCONn UUR0XRHBnR
UTRSTATn
RxD0
SUh0iRfteSrR
UFCONn
位 功能
2 发送器空状态位
1 发送缓冲器空状态位
0 接收缓冲器状态位
接收缓冲器空状态位:
0:空; 1:有数据
第6章 嵌入式系统总线接口
《嵌入式系统设计》
第6章 嵌入式系统总线接口
UART相关寄存器描述
描述 波特率系数寄存寄存器:决定串行发送接收时钟率
复位值 未定义
第6章 嵌入式系统总线接口
《嵌入式系统设计》
波特率计算
通过设置UCONn寄存器选择UART时钟是由 S3C2410A的系统时钟(PCLK)产生还是由外部UART 设备的时钟(UCLK)产生。
波特率的大小可以通过设置波特率寄存器(UBRDIVn) 控制,使用PCLK时的计算公式如下:
2 停止位
[1 :0] 字长
01:6位字符长度; 11:8位字符长度;
第6章 嵌入式系统总线接口
UART0相关寄存器描述
UCONn UBRDIVn
与CPU内 核相连
APB 接口
《嵌入式系统设计》
——Uart行控制寄存器
UTXHn
TxD0
Shifter
ULCONn URXHn
UTRSTATn
RxD0
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
《嵌入式系统设计》
——发送/接收数据缓冲寄存器
UUTTXXHHnn
TxD0
Shifter
ULCONn UURRXXHHnn
UTRSTATn
RxD0
Shifter
UFCONn
UTXHn 7:0
发送数据缓冲寄存器,保存发送数据
URXHn 7:0
接收数据缓冲寄存器,保存接收数据
0 接收缓冲器状态位
发送器空状态位: 0:发送器未空
1:发送器、发送缓冲器均空。
第6章 嵌入式系统总线接口
UART相关寄存器描述
与CPU内 核相连
UCONn
UBRDIVn
APB 接口
《嵌入式系统设计》
——Uart状态寄存器
UTXHn
TxD0
Shifter
ULCONn UUR0XRHBnR
UTRSTATn
开始前,线路处于空闲状态,连续多个“1”; 开始时,先发一个“0”作为起始位; 然后是二进制数据和奇偶校验位(可选); 最后是一个及一个以上的“1”作为停止位;
第6章 嵌入式系统总线接口
2.RS232概述
《嵌入式系统设计》
RS232-C是美国电子工业协会(EIA)制定的串行通 讯标准;
相关文档
最新文档