MSP430G2XX3 USCI 的UART 和 IIC 是独立的 吗?

2019-03-24 15:36发布

接触到 MSP430G2XX3 的 USCI,对这个外设的理解比较模糊,这个外设的 UART 和 IIC 是独立的吗? UCSI A0 和 UCSI B0 分别是什么意思? LaunchPad 中的 MSP430G2231 带 UART 吗? [ 本帖最后由 academic 于 2011-9-21 11:12 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
wl1336412
2019-03-25 15:14

 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 编辑 ]

一周热门 更多>

相关问题

    相关文章