UART是软件实现的
USI支持IIC跟SPI
USI可以设置成spi或者IIC
”The universal serial interface (USI) module is used for serial data communication and provides the basic hardware for synchronous communication protocols like SPI and I2C.“
SFR_8BIT(USICTL0); /* USI 控制寄存器 0 */ SFR_8BIT(USICTL1); /* USI 控制寄存器 1 */ SFR_8BIT(USICKCTL); /* USI 时钟控制寄存器 */ SFR_8BIT(USICNT); /* USI 位计数*/ SFR_8BIT(USISRL); /* USI 第八位*/ SFR_8BIT(USISRH); /* USI 高八位 */ SFR_16BIT(USICTL); /* USI 16位控制寄存器(USICTL0+USICTL1)*/ SFR_16BIT(USICCTL); /* USI USICTL+USICNT*/ SFR_16BIT(USISR); /* USI 十六位*/
//USICTL0
#define USIPE7 (0x80) /* USI 是能端口 Px.7 (SDI/SDA)*/ #define USIPE6 (0x40) /* USI 实能端口 Px.6 (SDO/SCL)*/ #define USIPE5 (0x20) /* USI 视能端口 Px.5 *(SCLK)/ #define USILSB (0x10) /* USI 移位寄存器方向 1:LSB / 0:MSB */ #define USIMST (0x08) /* USI 主从机模式0:从机 / 1:主机 */ #define USIGE (0x04) /* USI 输出锁存器有效位 */ #define USIOE (0x02) /* USI 输出有效位 */ #define USISWRST (0x01) /* USI 复位*/
//USICTL1
#define USICKPH (0x80) /* USI 同步时钟相位选择 (跟USICKPL结合决定时钟是否反向)*/ #define USII2C (0x40) /* USI I2C 模式,为零时spi模式 */ #define USISTTIE (0x20) /* USI START 条件下中断使能*/ #define USIIE (0x10) /* USI 计数中断有效*/ #define USIAL (0x08) /* USI 仲裁丢失*/ #define USISTP (0x04) /* USI STOP Condition received */ #define USISTTIFG (0x02) /* USI START Condition interrupt Flag */ #define USIIFG (0x01) /* USI Counter Interrupt Flag */
//USICKCTL
#define USIDIV2 (0x80) /* USI 时钟分频器选择位2 */ #define USIDIV1 (0x40) /* USI 时钟分频器选择位1*/ #define USIDIV0 (0x20) /* USI 时钟分频器选择位0 */ #define USISSEL2 (0x10) /* USI 时钟源选择 2 */ #define USISSEL1 (0x08) /* USI 时钟源选择 1 */ #define USISSEL0 (0x04) /* USI 时钟源选择 0 */ #define USICKPL (0x02) /* USI 时钟极性选择 */ #define USISWCLK (0x01) /* USI 软时钟???/????*/
//USICKTL--时钟分频器选择
#define USIDIV_0 (0x00) /* USI 1分频 */ #define USIDIV_1 (0x20) /* USI 2 分频*/ #define USIDIV_2 (0x40) /* USI 4 分频*/ #define USIDIV_3 (0x60) /* USI 8 分频*/ #define USIDIV_4 (0x80) /* USI 16 分频*/ #define USIDIV_5 (0xA0) /* USI 32分频*/ #define USIDIV_6 (0xC0) /* USI 64分频*/ #define USIDIV_7 (0xE0) /* USI 128分频*/
//USICKTL--时钟源选择
#define USISSEL_0 (0x00) /* SCLK */ #define USISSEL_1 (0x04) /* ACLK */ #define USISSEL_2 (0x08) /* SMCLK */ #define USISSEL_3 (0x0C) /* SMCLK */ #define USISSEL_4 (0x10) /* SWCLK */ #define USISSEL_5 (0x14) /* TA0 */ #define USISSEL_6 (0x18) /* TA1 */ #define USISSEL_7 (0x1C) /* TA2*/
//USICNT
#define USISCLREL (0x80) /* USI SCL 释放 */ #define USI16B (0x40) /* USI 16 位有效,为零时为八位串口*/ #define USIIFGCC (0x20) /* USI 中断标志清除*/ #define USICNT4 (0x10) /* USI Bit Count 4 */ #define USICNT3 (0x08) /* USI Bit Count 3 */ #define USICNT2 (0x04) /* USI Bit Count 2 */ #define USICNT1 (0x02) /* USI Bit Count 1 */ #define USICNT0 (0x01) /* USI Bit Count 0 */
[ 本帖最后由 wl1336412 于 2011-9-30 09:32 编辑 ] |