![]() |
| 首页-> 产品信息-> 8位单片机 | |||||||
|
串行接口原理及应用
6.1 SPMC65 系列单片机的串行接口 SPMC65 系列单片机共提供了三种串行接口模块,即: SPI ( Serial Peripheral Interface )串行外设接口; 标准全双工 UART 通用异步收发器; IIC ( Inter-Integrated Circuit )内部集成电路总线。 用户可以方便地使用 SPMC65 提供的串行接口模块,与各种串行外设进行通讯、数据交换等;常用的就有 24 系列 EEPROM 、单片机之间 UART 组网通讯、单片机与 PC 机进行串行通讯等。 SPMC65 系列单片机的三种串行接口模块与端口 C 复用端口,具体分布如表 7.1 。 表 6 . 1 端口 C 特殊功能复用对照
具体型号芯片的串行接口资源请参考具体型号芯片的数据手册,如在 SPMC65P2408A 中集成了 SPI 和 UART 两个串行接口模块。 6.2.1 SPI 接口简述 SPI(Serial Peripheral Interface) 即串行外设接口,是一种高速同步的串行接口,可以串行接收或发送数据,支持主从机之间的全双工同步传输,传输速率可编程设定。在 SPMC65 系列单片机中, SPI 模块有 4 个管脚(与端口 C 的低 4 位复用),支持主模式和从模式。许多参数都可编程设定,如工作模式、传输速率、时钟相位和极性等。 SPI 模块具有以下特性: ■ 四个接口管脚 · SDO :数据输出管脚(与 PC3 复用) · SDI :数据输入管脚(与 PC2 复用) · SCK :时钟输入 / 输出管脚(与 PC1 复用) · SSB :从机选择管脚(与 PC0 复用) ■ 支持全双工同步传输 ■ 两种工作模式:主模式、从模式 ■ 波特率: 8 种可编程传输速率, CPU 时钟在 8 MHz 时,最大可达 2Mbps ■ 每次发送或接收的数据长度: 8 位 ■ 时钟相位和极性的可编程设定 ■ 数据采样时刻选择:可在数据输出中或数据输出末尾进行采样 ■ SPI 接收 / 发送缓冲器大小为 1 个字节 下图为 SPMC65 系列单片机的 SPI 串行接口功能框图:
图 6 . 1 SPI 串行接口功能框图
SPI 接口经常用于和 EEPROM 进行通讯。如 图 6.2 即为 SPMC65 系列单片机与 93C46 通讯的应用电路。
图 6 . 2 SPI 应用电路图 6.2.2 控制寄存器 SPI 控制寄存器 0 P_SPI_Ctrl0 ( $38 , R/W ) 写 SPI 控制寄存器 0 P_SPI_Ctrl0 ( $38 )可以完成 SPI 模块的使能控制、主 / 从模式选择、时钟信号特性设置,以及 SPI 通讯时钟频率选择等;该寄存器默认初始值为 #00h 。有关 SPI 控制寄存器 0 的功能请参考 表 6.2 。 表 6 . 2 SPI 控制寄存器 0 P_SPI_Ctrl0 ( $38 , R/W )
Bit 7 SPIEN:SPI使能位。该位置1后PC[3:0]即作为SPI通讯接口。 SPI 控制寄存器 1 P_SPI_Ctrl1 ( $39 , R/W ) 而 SPI 模块的从模式的设置,以及采样时钟频率的选择等,可以通过写 SPI 控制寄存器 1 P_SPI_Ctrl1 ( $39 )完成设置。而采样时钟的目的是为了防止在接收数据时受到尖脉冲的干扰,但是低的采样率会影响通信速度;建议:采样时钟频率 >= 4 X SPI 时钟频率。 SPI 控制寄存器 1 默认初始值为 #02h ;该寄存器各位的功能请参考 表 6.3 。 表 6 . 3 SPI 控制寄存器 1 P_SPI_Ctrl1 ( $39 , R/W )
Bit 7 SMSEN:SPI从模式选择输入 PI TX/RX 状态寄存器 P_SPI_Status ( $3A , R/W ) SPMC65 系列单片机的 SPI 模块提供了发送和接收中断,可以通过读取 SPI TX/RX 状态寄存器 P_SPI_Status ( $3A )查询 SPI 模块的中断标志;而写 SPI TX/RX 状态寄存器可以设置 SPI 中断的使能、清除 SPI 中断标志。该寄存器默认初始值为 #00h ,具体各个位的功能请参考 表 6.4 。 表 6 . 4 SPI TX/RX 状态寄存器 P_SPI_Status ( $3A , R/W )
Bit 7 SPIIF:SPI 中断标志 Bit 6 SPIIEN: SPI中断使能位 1= 发送缓冲器满 Bit [4:1] 保留 Bit 0 BUFFull:接收缓冲器满并覆盖标志位 注:当前 SPI 接收到一个完整的数据时,会把接收缓冲器中上次接收到的数据覆盖,此时将 BUFFull 标志位置位;若上次接收到的数据被读取,则该标志位清零。 SPI 发送缓冲器 P_SPI_TxData ( $3B , R/W ) SPMC65 系列单片机的 SPI 模块提供了发送和接收数据的缓冲器,这两个寄存器默认初始值都为 #00h ,发送缓冲器的具体功能请参考下 表 6.5 : 表 6 . 5 SPI 发送缓冲器 P_SPI_TxData ( $3B , R/W )
Bit [7:0] SPITXDATA : SPI 发送数据 读 :总为 #00 h 写: 发送数据 SPI 接收缓冲器 P_SPI_RxData ( $3C , R/W )表 6 . 6 SPI 接收缓冲器 P_SPI_RxData ( $3C , R/W )
Bit [7:0] SPIRXDATA : SPI 接收数据 读: SPI接收数据 写: 无效 6.2.3 工作机制 主模式( Master Mode ) 在主模式下,移位时钟 SCK 由 SPI 模块产生。在寄存器 P_SPI_Ctrl0 中有两个分别控制时钟相位( SCKPHA )和极性 (SCKPOL) 的控制位。当向 P_SPI_TxData 寄存器写入数据时,发送立即开始。 另外如果用户想要接收从机数据, SDI 管脚 (PC2) 可以设置为悬浮输入状态。 SPMC65 系列单片机支持 SPI 模块的接收和发送中断。在寄存器 P_SPI_Status 中将 SPIIEN 位置 1 可同时使能收发中断。同样,在收发中断服务程序结束后需要清除 SPIIF 标志位。 在软件向寄存器 P_SPI_TxData 写入一个字节之后,数据被锁存到寄存器的内部发送缓冲器中。如果此时移位寄存器是空的,该数据将被载入到移位寄存器中并在下一个 SCK 相位时开始传输。如果移位寄存器正在执行数据移位(由 P_SPI_TxStatus 寄存器中的 TXBF 标志得知),新数据会等待当前的数据移出后才可以载入进行移位。 SPI 通过 SDO 管脚将数据从最高有效位 (MSB) 开始移出,直到最低有效位 (LSB) 也被移出。 8 位数据在 8 个 SCK 周期后全部移出。同时,接收的数据也通过 SDI 引脚移入。当每组 8 位发送完成后, P_SPI_Status 寄存器中的 SPIIF 置 '1' ;此外,如果寄存器 P_SPI_Status 中的 SPIIEN 位被设置为 ‘1' ,会产生一个 SPI 发送中断。 相反的,当 SPI 接口成功地接收了一组 8 位数据时,接收到的数据将被锁存到接收缓冲器中。此时, P_SPI_Status 寄存器中的 SPIIF 位将被设置为 ‘1' , 如果 P_SPI_Status 寄存器中的 SPIIEN 位被设置为 ‘1' ,会产生一个 SPI 接收中断。图 6.3 给出了 SPI 主机模式下不同运行类型的时序(极性控制位等于 “1” 或 “0” ,相位控制位等于 “1” 或 “0” ,取样控制位等于 “1” 或 “0” )。
图 6 . 3 SPI 主模式时序 从模式 ( Slave Mode ) 在从机模式下,移位时钟 SCK 来自外部 SPI 主设备,所以第一个外部时钟周期开始传输。发送前,软件应在第一个来自主设备的 SCK 之前向其发送缓冲写入数据。主设备与从设备都必须按相同的 SCK 相位和极性运行,以进行数据的发送与接收。 如果时钟相位 (SCKPHA) 为 “1” ,只要向 P_SPI_TxData 寄存器写入数据,就开始移出的第一个数据位。如果时钟相位 (SCKPHA) 为 “0” ,则在第一个 SCK 边沿后才开始移出的第一个数据位。 SPI 从模式时序请参考 图 6.4 : 注:图中“ SSB ”为 SPI 从机选择信号,由主机发出,从机接收到“ SSB ”信号后启动 SPI 。
图 6 . 4 SPI 从模式时序图 SPI 中断 与 SPI 相关的中断有两个: SPI 发送中断和接收中断。因为 SPI 为全双工通讯,因此这两个中断同时发生,并且共用一个中断标志位。 SPI 发送中断 SPI 接收中断 设置 SPI 中断需要以下步骤: 1. 用“ SEI ”指令关闭总的中断开关; 2. 使能 SPI 模块,配置相关寄存器; 3. 在 P_SPI_Status ( $3A )寄存器中将 SPIIEN 位置 1 ,使能 SPI 中断; 4. 用“ CLI ”指令打开总的中断开关; 5. 等待中断产生。6.2.4 应用举例 SPI 采样时钟选择计算公式 1. spi 时钟计算公式 用下面的公式计算采样时钟,以保证获得正确的数据。 采样时钟频率 >= 4 X SPI Clock 例: SPI 时钟频率 =1MHz(PC1), F SYS =8MHz 采样时钟频率 >= 4X1MHz = 4MHz 采样时钟必须大于 4Mhz 才能保证从机数据接收正确。 因此,采样时钟选择位 (SPISPCLK [1:0]) 宜设置为 2 采样时钟频率 =8MHz/2=4Mhz IO 设置对照 SPI 在主 / 从模式下工作时,端口 C 的设置请参考 表 6.7 : 表 6 . 7 SPI 功能复用端口设置
【例 7-1 】: SPI 在主模式下运行(初始化)
【例 7-2 】: SPI 主模式下发送数据
【例 7-3 】: SPI 主模式下接收数据
【例 7-4 】: SPI 从模式下运行(初始化)
6.3.1 SPMC65 系列单片机的 UART 接口简述 UART 即通用异步收发器,可配置成全双工异步通讯方式,与 PC 等通讯;或设置成半双工同步模式与其它周边外设通讯,如 A/D 或 D/A 。 SPMC65 系列单片机内置了 UART 模块,它的作用是: 将外部设备串行数据转换为并行数据接收;将内部并行数据转换为串行数据发送。 UART 模块特点如下: ■ 两个接口管脚 · RXD :数据接收管脚 ( 与 PC5 复用,使用 RX 功能时设置为输入口 ) · TXD :数据发送管脚 ( 与 PC4 复用,使用 TX 功能时设置为输出口 ) ■ 提供标准的异步全双工通讯 ■ 可编程的波特率 ■ 可进行偶校验、奇校验或禁止校验 ■ 停止位可设置为 1 位或 2 位 ■ 支持发送中断 ■ 支持接收中断 ■ 高抗噪声能力的数据接收 ( 接收中间连续进行 3 次采样,并对结果进行多数决策 ) ■ 在接收中进行帧校验和奇偶校验 ■ 溢出检测 ■ CPU 工作频率为 8MHz 时,波特率可在 2400 bps~38400 bps 之间编程设置 UART 的数据帧如图 图 6.5 如示:
图 6 . 5 UART 数据帧 UART 接口通常用于与 PC 机通讯,或者用于单片机间的通讯。 6.3.2 控制寄存器 UART控制寄存器 P_UART_Ctrl( $46 , R/W ) 可以通过写 UART 控制寄存器 P_UART_Ctrl ( $46 )对 UART 的中断使能、 UART 功能、帧格式等进行设置; P_UART_Ctrl 默认初始值为 #00h ,具体位的功能请参考 表 6.8 : 表 6 . 8UART 控制寄存器 P_UART_Ctrl ( $46 , R/W )
Bit 7 RXIE :接收中断使能位 UART 波特率分频器 P_UART_Baud ( $47 , R/W ) SPMC65 系列单片机的 UART 波特率可通过软件设置 UART 波特率分频器 P_UART_Baud ( $47 )的值,通过换算可得到所需要的 UART 波特率。 P_UART_Baud 默认初始值为 #00h ,具体功能请参考 表 6.9 ,以及后面的说明。表 6 . 9 UART 波特率分频器 P_UART_Baud ( $47 , R/W )
Bit [7:0] BaudRate[7:0] : UART 波特率分频器 SPMC65 系列单片机的 UART 波特率是由一个波特率寄存器和一个 8 位定时 / 计数产生的。每次定时 / 计数器计到最大计数值 (0xFF) 后,再加 1 时,一个时钟信号就会被发送到波特率产生电路,在该电路中,时钟信号会通过一个 16 分频的计数器,然后产生波特率。定时 / 计数器溢出后,会自动重新载入波特率寄存器中的值。 波特率寄存器中的内容为 8 位的无符号数, UART 波特率的计算公式如下: 波特率 = F SYS / [16 X (256 – UARTBAUD ) ] 按下面的公式计算 P_UART_Baud 寄存器的值: UARTBAUD=256 - F SYS / ( 16 X Baud Rate ) 注: UARTBAUD 即 P_UART_Baud 中的值。 注:波特率计算结果不能大于 38400 。 表 6 . 10 UART 波特率对照表
UART 状态寄存器 P_UART_Status ( $48 , R/W ) 读取 UART 状态寄存器 P_UART_Status ( $48 )可获得 UART 运行的一些状态信息,如 UART 中断标志、帧错误信息等;而写该寄存器的相应位则是清除相应位的标志。 P_UART_Status 默认初始值为 #00h ,具体位的功能请参考 表 6.11 : 表 6 . 11 UART 状态寄存器 P_UART_Status ( $48 , R/W )
Bit 7 RXIF :接收中断标志 UART 数据寄存器 P_UART_Data ( $49 , R/W ) SPMC65 系列单片机的发送、接收数据寄存器共用 P_UART_Data 一个寄存器。读取 P_UART_Data 寄存器中的值时,会自动清掉 P_UART_Status 寄存器中的接收中断标志位;而写数据到 P_UART_Data 寄存器时,会自动把 P_UART_Status 寄存器中的发送中断标志位(即发送准备好标志位)清零。具体位的功能请参考 表 6.12 : 表 6 . 12 UART 数据寄存器 P_UART_Data ( $49 , R/W )
Bit [7:0] UARTDATA [7:0]: UART 数据寄存器 读: 读取接收到的数据同时 RXIF 标志位清零 写: 将发送数据写入寄存器同时 TXIF 标志位清零 6.3.3 工作机制 当 UART 模块成功的接收到一个字节的数据后,会把接收到的数据载入接收缓冲寄存器( P_UART_Data ),如果此时在 P_UART_Status 中的 RXIE 位为 1 ,则会自动将 RXIF 标志位置 1 ;之后读取 P_UART_Data 会自动将 RXIF 标志位清零。 当 P_UART_Status 中的 TXIE 位为 1 时,若 TXIF 位置 1 则表示 UART 模块完成数据发送并准备好了进行下一次发送,如果状态寄存器中‘ I '标志位为 0 (总中断打开)则会发生一次 UART 发送中断。写数据到 P_UART_Data 寄存器会自动将 TXIF 位清零。 BUSY 为只读的标志位,当其置 1 时代表 UART 模块正在忙,当传输完成 BUSY 标志位会自动清零; P_UART_Status 中的其它标志位还有 OERR 、 PERR 、 FERR ,都为帧错误信息标志,向对应的寄存器位写入 “1” 可清除 OERR (溢出错误标志)、 PERR (奇偶校验错误标志)与 FERR (帧错误标志)。 在软件向 P_UART_Data 寄存器写入数据后, UART 开始发送。 UART 在 TX 引脚上发送数据按照以下顺序:起始位、 8 位数据 ( 低位在前 ) 、奇偶校验位 ( 奇偶校验使能的情况下有效 ) 、停止位。发送停止位后再经过两个 CPU 时钟周期,寄存器 P_UART_Status 中的 TXIF 位被置 1 。 当 P_UART_Ctrl 寄存器中的 RXEN 位使能接收功能后,如果 RX 引脚接收到一个开始位的下降沿,标志着接收数据开始;在停止位时间周期内,串口检查以下条件: 如果满足 RXIF = 0 且 RXIE = 1 的条件,寄存器串口向 P_UART_Data 写入接收字节并置 RXIF 位为 1 ;不满足,则丢失接收数据,不会载入到寄存器 P_UART_Data 中。在停止位时间过了一半之后,串口开始等待 RX 引脚上的下一个开始位下降沿。 UART 中断: 与 UART 有关的两个中断: 发送中断 接收中断 注:发送中断信号实际上是“ 发送数据准备好 ”标志触发的。 产生 UART 中断需要以下步骤: 1. 用“ SEI ”指令关闭总的中断开关; 2. 设置 UART 相关寄存器; 3. 在 P_UART_Ctrl ( $46 )寄存器使能发送 / 接收中断; 4. 用“ CLI ”指令打开总的中断开关; 5. 等待中断产生 【例 7- 5 】: 初始化 UART (发送)中断
应用举例 【例 7-6 】: UART 采用查询方式发送一串数据
【例 7- 7 】: UART 用查询方式接收数据
6.4.1 IIC 接口简述 IIC(Inter-Integrated Circuit) 功能即内部集成电路总线。 它支持多主机 ( multi-master ) 通讯机制,主机之间相互通信或与其它周边通信时使用两根信号线:一个串行数据线 (SDA) 和一个串行时钟线 (SCL) 。为了避免数据混淆、丢失或阻塞,主从机之间通讯必须有特定的协议。在多主机的 IIC 总线中,主机可以向多个从机发送 / 接收串行数据。数据传送由主机发起,也由主机结束。在一个主机系统中,也可以有多个主机和多个从机。如果多个主机同时企图控制总线,仲裁器会决定那个主机拥有最高优先权。总线上最多可连接的设备数由总线上允许的最大电容值 400 pF 决定,并且还受 IIC 总线最大寻址空间 16 K 限制。 SPMC65 系列单片机的 IIC 接口特性如下: ■ 两个外部管脚 · SDA :数据输入 / 输出管脚(与 PC7 复用) · SCL :时钟管脚(与 PC6 复用) ■ 支持主机发送 / 接收模式 ■ 支持从机发送 / 接收模式 ■ 侦测总线仲裁失败 ■ 中断发生 ■ 可编程的应答信号( ACK ) ■ 主模式下可编程的时钟频率 IIC 接口通常用于和 EEPROM 进行通讯。如 图 6.6 所示为 24C01A 和 SPMC65 系列单片机的应用电路。
图 6 . 6 IIC 接口应用电路 6.4.2 控制寄存器 IIC 总线控制寄存器 P_IIC_Ctrl ( $4A , R/W ) 写 IIC 总线控制寄存器 P_IIC_Ctrl ( $4A )可以完成对 IIC 接口使能、输出使能、 IIC 中断使能等, P_IIC_Ctrl 的低 3 位为 IIC 时钟频率的选择位。 P_IIC_Ctrl 默认初始值为 #00h ,寄存器每一位的功能请参考 表 6.13 : 表 6 . 13 IIC 总线控制寄存器 P_IIC_Ctrl ( $4A , R/W )
Bit 7 IICEN : IIC 串行接口使能位 IIC 总线状态寄存器 P_IIC_Status ( $4B , R/W ) 写 IIC 总线状态寄存器 P_IIC_Status ( $4B )可以进行 IIC 总线的模式设置,如主 / 从模式选择、发送 / 接收模式选择,而读 P_IIC_Status 寄存器可以得到当前 IIC 总线工作的状态,如中断标志、总线仲裁信号等。 P_IIC_Status 寄存器默认初始值为 #00h ,其每一位的功能描述请参考 表 6.14 : 表 6 . 14 IIC 总线状态寄存器 P_IIC_Status ( $4B , R/W )
Bit 7 MXT : IIC 主 / 从模式选择位 IIC 总线数据寄存器 P_IIC_Data ( $4C , R/W ) SPMC65 系列单片机的 IIC 接口模块为 IIC 总线提供了一个数据寄存器 P_IIC_Data ( $4C )和一个地址寄存器 P_IIC_Address ( $4D ),这两个寄存器的默认初值都为 #00h ;其功能请参考 表 6.15 和 表 6.16 : 表 6 . 15 IIC 总线数据寄存器 P_IIC_Data ( $4C , R/W )
Bit [7:0] IICDATA [7:0] : IIC 总线数据寄存器 读:接收数据 写:发送数据 IIC 总线地址寄存器 P_IIC_Address ( $4D , R/W ) 表 6 . 16 IIC 总线地址寄存器 P_IIC_Address ( $4D , R/W )
Bit [7:0] IICADDRESS [7:0] : IIC 总线地址寄存器 从机模式:从机的地址6.4.3 工作机制 操作: IIC 总线协议对其连接的每个通讯设备都定义了一个地址,当主机启动数据传送时,首先要将它欲与之通讯的那个从机的地址发到总线上,此时所有的从机都监听这个地址信息。在这个地址中,有一位用来定义主机是从从机中读数据还是向从机写数据的。主机和从机在进行数据传送的时候的状态永远是互补的 ( 发送 / 接收 ) 。他们的关系必为以下二者之一: 主机发送,从机接收 从机发送,主机接收 在这两种情况下,时钟信号都是由主机产生的。 为了在总线上与其它设备“线与” (wired-AND) 连接,时钟线 (SCL) 和数据线 (SDA) 是开漏输出。外部的上拉电阻用于保证当没有设备拉低总线时,总线保持高电平状态。 图 6.7 为 24C01A 的通讯协议:
图 6 . 7 24C01A IIC 通讯协议 启动和停止数据传送 当总线上无数据传送时(空闲时间),时钟线( SCL )和数据线( SDA )通过外部上拉电阻被拉高。启动信号和停止信号决定数据传送的开始和停止,定义如下: 启动信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据; 停止信号: SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。 如 图 6.8 所示为开始信号和停止信号的具体定义。主机产生这两个信号作为数据传送的开始和结束。根据启动信号和停止信号的定义,当数据正在传送时, SDA 只能在 SCL 拉低后才能改变状态,传送新的数据位。
图 6 . 8 开始和停止信号 地址格式的定义 SPMC65 系列单片机的 IIC 接口仅支持 7 位地址格式外加 1 位读 / 写标志位。 7 位地址格式如 图 6.9 所示。
图 6 . 9 7 位地址格式 传送应答( ASK 信号) IIC 总线协议规定,所有数据都是一个字节一个字节的发送,每次发送的字节数不做限定。从机每收到一个字节后,都会产生一个应答信号 (ACK) 。 如果主机没有收到应答信号,则必须停止传送。此时从机必须释放 SDA ,使其恢复为高电平,让主机可以产生停止信号。如 图 6.10 所示为 IIC 总线上的应答信号。
图 6 . 10 IIC 总线应答信号 如果主机正在接收数据(主机接收模式),除了最后接收的那个字节外,每接收到一个字节都会产生一个应答信号。最后一个字节不产生应答信号,其实也是一种信息,就是为了告诉从机发送结束。然后从机释放 SDA ,让主机产生停止信号。主机也可以在应答信号的脉冲期间,与时钟信号 SCL 组合,产生停止信号,从而结束数据传送。通用地址 IIC 总线上寻址的过程是这样的:在启动信号后传送的第一个字节即主机要访问的从机的地址信息。不同的是:当主机发送的第一个字节为通用地址时,则可以访问所有的从机。理论上将,发送通用地址后,所有的从机都应该向主机发送一个应答信号。 IIC 协议规定了一个通用地址,它的 7 个地址位和一个 R/W 位均为 0 ,用于呼叫所有的从机。通用地址可以被自动识别。此时,将 AZERO 位置 1 。 总线仲裁 多主机模式的系统是通过总线仲裁来协调工作的。当主机 A 输出高电平到 SDA 管脚上时,同时,另一主机 B 输出低电平到 SDA 管脚,将 SDA 线拉低,这种情况下,主机 A 从 SDA 管脚读回的信号为低,与输出不一致,此时, ARBITRAT 位置 1 ,表明总线被另一主机 B 占用。 从机模式( Slave mode ) 在从机模式下,从机的 SCL (PC6) 和 SDA (PC7) 管脚必须设置为输入。当需要作为 IIC 输出 (slave–transmitter) 时 ,IIC 模块会自动将对应的 IO 口设置为输出。 当地址值与寄存器 P_IIC_Address 里的值相匹配或者 IIC 模块自动将 ACKEN 位置 1 ,产生应答信号,然后将接收到的数据存入 P_IIC_Data 寄存器。 从机的设置步骤如下: 1. 将 PC6 和 PC7 置为悬浮输入 2. 使能 IIC 模块 ( IICEN= 1) 3. 使能 IIC 数据输出 (TXRXEN= 1) 4. 设置从机模式 (MXT= 0, TXRXSEL= 0) 典型的数据传送步骤如下:(从机模式接收) 1. 从机在 P_IIC_Address 中设置地址; 2. 通过查询 IICIF 位,得知一个字节的数据接收完毕; 3. 当主机在写模式下 (TXRXSEL=0) ,从机从 P_IIC_Data 寄存器中读取接收到的数据; 4. 当主机在读模式下 (TXRXSEL=1) ,从机将要发送的数据载入寄存器 P_IIC_Data 中; 5. 清除 IICIF 位。 主机模式( Master mode ) 在主机模式下, SCL ( PC6 )和 SDA ( PC7 )管脚必须设置为输入。当需要作为 IIC 输出 (master–transmitter) 时 ,IIC 模块会自动将 IO 口设置为输出。 IIC 的时钟 (SCL) 由主机产生, SPMC65 系列单片机支持 8 种时钟频率(通过 SCK[2:0] 选择),最高达 1MHz@ 8MHz 。设置主机模式的步骤如下: 1. 将 PC6 和 PC7 置为悬浮输入 2. 使能 IIC 模块 ( IICEN= 1) 3. 使能 IIC 数据输出 (TXRXEN= 1) 4. 设置主机模式 (MXT= 1, TXRXSEL= 1) 典型的数据发送步骤如下:(主机模式发送) 1. 在寄存器 P_IIC_Data 中设置从机地址 2. 通过查询 BUSY 位,得知总线是否就绪可用 3. 设置 SIGGEN 位,产生启动信号,开始发送寄存器 P_IIC_Data 中的数据。 4. 通过查询 IICIF 位,得知数据已发送完成 5. 将下一个要发送的数据载入 P_IIC_Data 6. 清除 IICIF 标志位 7. 设置 SIGGEN 位,产生停止信号 IIC 中断 SPMC65 系列单片机中,以下事件将导致发生 IIC 中断,并置中断标志位 IICIF 。 1. 发送一个字节的数据 2. 接收一个字节的数据 设置 IIC 中断的步骤如下: 1. 用 “SEI ” 指令关闭总的中断开关 2. 设置与 IIC 操作相关的寄存器 3. 在 P_IIC_Ctrl ( $4A )寄存器中将 IIC 中断使能位置 1 4. 用“ CLI ”指令打开总的中断开关 5. 等待中断产生 6.4.4 应用举例 【 例 7-8 】:主机发送模式的操作(初始化)
【例 7-9 】: 主机发送模式操作(数据发送)
【例 7-10 】: 主机发送模式操作(数据接收)
【例 7-11 】: 从机接收模式操作(初始化)
【例 7-12 】 : 从机接收模式(发送 / 接收)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 版权所有:北京凌阳爱普科技有限公司 www.sunplusmcu.com 本站网络实名、通用网址:凌阳单片机 未经许可网站内容严禁复制、转载,任何人不得擅自使用 京ICP备05061966号 |