TWI串行总线采用两根线(SDA和SCL)在总线和装置之间传递信息。SH88F6161完全符合TWI总线规范,自动对字节进行传输进行处理,并对串行通讯进行跟踪。 2.6.1工作方式配置介绍 twi_define.h文件中定义了以下几个模式: #define MT_MODE:打开该宏,配置6161工作在主机传送模式; #define MR_MODE:打开该宏,配置6161工作在主机接收模式; #defineSLAVE_MODE:打开该宏,配置6161工作在从机模式; 将相应功能的宏定义打开,屏蔽其他宏定义,编译、加载运行可进行测试。 2.6.2测试程序介绍 Twi_Test.c分别以作为主机和从机传送和接收10个byte数据为例给出了该模块的应用; 1. 选择“Twi”工程后,打开宏定义“MT_MODE”,编译、加载运行可测试6161作为主机向从机传送数据,分别为“0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A……..” 2. 选择“Twi”工程后,打开宏定义“MR_MODE”,编译、加载运行可测试6161作为主机从从机接收10个byte数据; 3. 选择“Twi”工程后,打开宏定义“SLAVE_MODE”,编译、加载运行可测试6161作为从机: - 向主机发送10个byte数据,分别为“0x40, 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49”
- 从主机接收10个byte数据,分别为“0x40, 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49”
本模块测试需要两个6161板子,一个作为主机,一个作为从机进行配合。 注:如果不能得到正确结果,请检查SCL和SDA是否接上拉电阻,通常选择10k 串行外部设备接口(SPI)是一种高速串行通信接口,允许MCU与外围设备(包括其它MCU)进行全双工,同步串行通讯。 2.7.1工作方式配置介绍 spi_define.h文件中定义了以下两个模式: #define SLAVE_MODE:打开该宏,配置6161作为从机; #define MASTER_MODE:打开该宏,配置6161作为主机; 2.7.2测试程序介绍 以6161作为主机向另一块作为从机的6161传送数据为例,具体过程如下: 主机6161向从机6161传送“0x40, 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A”;从机收到主机发送的数据后,将相应数据返回给主机,主机接收到从机返回的数据后,将其保存到rcv_data[]数组中。 选在“Spi”工程后,打开宏定义“#define MASTER_MODE”编译,下载运行使其作为主机; 选在“Spi”工程后,打开宏定义“#define SLAVE_MODE”编译,下载运行使其作为从机; 本模块程序运行测试需要两块6161板子配合。 注:如果从机向主机返回的数据内容与期望值有差别,可尝试提高从机的的系统时钟频率,或降低主机的系统时钟频率; 本次实例中,以一个主设备一个从设备的通讯网络为例,因此无需控制SS引脚,即只需接SCK,MOSI,MISO三根信号线; 2.7.3寄存器简要介绍 SPCON | | | | | 传送方向选择位 0:MSB优先发送 1:LSB优先发送 | | | SP设备选择位 0:配置SPI作为从属设备 1:配置SPI作为主设备 | | | 时钟相位控制位 0:SCK周期的第一沿采集数据 1:SCK周期的第二沿采集数据 | | | 时钟极性控制位 0:在Idle状态下SCK处于低电平 1:在Idle状态下SCK处于高电平 | | | 引脚控制位 0:在主和从属模式下,打开引脚 1:在主和从属模式下,关闭引脚 如果SSDIS置1,不产生MODF中断请求。 在从属模式下,如果CPHA = 0,该位不起作用。 | | | 串行外部设备时钟速率选择位 000: fSYS /2 001: fSYS /4 010: fSYS /8 011: fSYS /16 100: fSYS /32 101: fSYS /64 110: fSYS /128 111: fSYS /256 |
SPSTA | | | | | | | | 串行外部设备数据传送标志位 0:由软件清0 1:表明已完成数据传输,由硬件置1 | | | 模式故障位 0:由软件清0 1:表明引脚电平与SPI模式不一致,由硬件置1 | | | 写入冲突标志位 0:有软件清0,表明已处理写入冲突 1:由硬件置1,表明检测到一个冲突 | | | 接收超限位 0:表明已处理接收超限,由软件清0 1:表明已检测到接收超限,由硬件置1 |
SPDAT | | | | | 写入SPDAT的数据被放置到发送移位寄存器中。读取SPDAT时将获得接收移位换寄存器的数据。 |
Uart工作方式列表: SM0 | | | 类型 | 波特率 | 帧长度 | 起始位 | 停止位 | 第9位 | 0 | | | 同步 | fSYS/(4或12) | 8位 | 无 | 无 | 无 | 0 | | | 异步 | 自带波特率发生器的溢出率/16 | 10位 | 1 | 1 | 无 | 1 | | | 异步 | fSYS/(32或64) | 11位 | 1 | 1 | 0,1 | 1 | | | 异步 | 自带波特率发生器的溢出率/16 | 11位 | 1 | 1 | 0,1 |
通过配置相应寄存器可使Uart工作在不同的工作方式,本次Demo程序以Uart0的方式1为例,给出了6161传送数据和接收数据的实例。 注:Uart0和Uart1完全相同; 2.8.1工作方式配置介绍 uart_define.h文件中,定义了以下两个宏: #define Enable_uart_TX_test:测试6161工作在方式1传送数据; #define Enable_uart_RX_test:测试6161工作在方式1接收数据;
|