2019-03-24 15:36发布
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 */
最多设置5个标签!
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 释放 */
[ 本帖最后由 wl1336412 于 2011-9-30 09:32 编辑 ]#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 */
UART模块与USI模块不同,即不能用USI模块在硬件上替代UART。
一周热门 更多>