编辑: 摇摆白勺白芍 | 2018-07-19 |
SPI 时钟为 fSYS/4 001:SPI 主机模式;
SPI 时钟为 fSYS /16 010:SPI 主机模式;
SPI 时钟为 fSYS /64 011:SPI 主机模式;
SPI 时钟为 fSUB 100:SPI 主机模式;
SPI 时钟为 CTM0 CCRP 匹配频率/2 101:SPI 从机模式 注:若选择的是作为 SPI 从机,则其时钟源从外部主机控制. 2. SPI 通信模式为全双工模式,且能以主/从模式的工作方式进行通信,MCU 既可以做为主 机,也可以做为从机.虽然 SPI 介面理论上允许一个主机控制多个从机,但此处的 SPI 中只有一个选信号引脚SCS ????? . 若主机需要控制多个从机 , 可使用输入/输出引脚选择从机. HT8 MCU SPI 应用须知 AN0488T V1.00
6 /
11 July 13,
2018 SIMC2 暂存器之 Bit
2 用於控制SCS ?????脚的使能和除能,如下说明: Bit
2 CSEN:SPI SCS ?????引脚控制位元 0:除能 1:使能 VDDIO PIN 使用说明 为了适应不同的周边器件介面电压需要,部分 HT8 MCU 对SPI 模组增加了 VDDIO 管脚, 可进行电压转换(Level Shift).例如:HT66FV140 Enhanced Voice 8-Bit Flash MCU 需要工作在 5V 时,但外接 SPI Flash 工作电压却为 3.3V.此时 VDD 可接 5V,VDDIO 可接 3.3V.这样 就解决了 MCU 工作电压与周边电压匹配问题 . 可通过 PBS0 暂存器之 Bit 1~0 来配置 VDDIO 管脚功能.如下: PBS01~PBS00:PB0 功能选择 00/01/10 :PB0
11 :VDDIO 该引脚作为 VDDIO 时,相应的 I/O 功能及其上拉电阻都将除能,Port C 的电源将由 VDDIO 引脚提供. 注:详细请参考 HT66FV140 Enhanced Voice 8-Bit Flash MCU 规格书. 硬体电路图 图7. HT8 SPI 通讯电路图 +5V C1
104 1
2 3
4 OCDS(ICP) JP-M +5V OCDS-CK-M OCDS-DA-M KEY
1 2
3 4 OCDS(ICP) JP-S +5V OCDS-CK-S OCDS-DA-S +5V C2
104 VDD
24 VSS
25 SCS
7 SCK
5 SDI
6 SDO
2 PA0/OCDSDA
14 PA2/OCDSCK
13 PA1
1 MASTER HT66FV140-28 VDD
24 VSS
25 SCS
7 SCK
5 SDI
6 SDO
2 PA0/OCDSDA
14 PA2/OCDSCK
13 SLAVE HT66FV140-28 OCDS-CK-M OCDS-DA-M OCDS-CK-S OCDS-DA-S HT8 MCU SPI 应用须知 AN0488T V1.00
7 /
11 July 13,
2018 硬体电路说明 在主从机同时上电后,按下按键 KEY,则主机向从机开始发送资料. 在主从机连接时要注意,主机的 SDI 接从机的 SDO,主机的 SDO 接从机的 SDI,主机的 SCK 接从机的 SCK,主机的SCS ?????接从机的 SCS ?????. OCDS 介面,可用来模拟调试或烧录 IC 用. 软体说明 软体设计说明 SPI 通讯轮询模式 ? 主机设计 在通讯轮询模式中,主机是通过检查 TRF 旗标来判断检查 SPI 通讯是否结束.在主机和 从机 Power On 工作后,主机和从机的写到 SPI 之SIMD 暂存器中的初始资料分别为 0x55 及0xAA,在主机第一次按下键发送资料时,将0x55 发送出去,同时收到从机发送的资 料也为 0xAA.用RAM 监视器将此资料显示出来. 当主机发送完第一笔资料后,再每按一次键主机都会将发送资料加
1 后发送给从机.从 机会将接收到的资料取反后发送给主机.主机端可利用 HT-IDE3000 的资料,除错介面 的RAM 监视器来显示传送和接收的资料.利用 RAM 监视器查看资料时,发送资料在 Tx_Buf RAM 中,接收资料在 Rx_Buf RAM 中,可以将 Tx_Buf 定义在 80H,Rx_Buf 定义 在81H. 图8. 主机 RAM 监视器 组合语言的定义方法如下: data .section at 80H '
data'
Tx_Buf DB ? ;
80H.... Rx_Buf DB ? ;
81H.... C 语言的定义方法如下: data .section at 80H '
data'
static volatile u8 Tx_Buf_attribute_((at(0x80)));
static volatile u8 Rx_Buf_attribute_((at(0x81)));