This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F5529:USI_b0_vector:未生成中断。

Guru**** 2585275 points
Other Parts Discussed in Thread: MSP430F5529, TLV320DAC3100

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/614721/msp430f5529-usci_b0_vector-interrupt-is-not-getting-generated

部件号:MSP430F5529
主题中讨论的其他部件: TLV320DAC3100

没有为我的代码生成中断。

这是我的代码:

#include "driverlib.h"
//*********************************************************************************************************
//! 此示例显示如何将I2C模块配置为
//! 中断驱动模式下的多字节传输。 从属
设备的地址//! 模块在本示例中设置。
//!
//! 本示例使用以下外围设备和I/O信号。 你必须
//! 查看这些内容并根据需要对您自己的主板进行更改:
//! - I2C外设
//! - GPIO端口外设(用于I2C引脚)
//! - SCL2
//! - SDA
//!
//! 此示例使用以下中断处理程序。 要使用此示例
//! 在您自己的应用程序中,您必须将这些中断处理程序添加到
您的//! 引导程序表。
//! - USI_B0_Vector。
////*************************************************************************************************

//*************************************************************************************************
////
设置从属模块的地址。 这是以
///以下格式发送的7位地址:
//[A6:A5:A4:A3:A2:A1:A0:RS]
////
第一个字节"RS"位置中的零表示主//
向所选从属设备传输(发送)数据,在此位置
的一个//表示主设备从从属设备接收数据。
////*************************************************************************************************

#define slaver_address 0x30
//*************************************************************************************************
////
指定要传输的字节数
/////*************************************************************************************************

#define TXLENGTH 0x04
#define RXCOUNT 0x02

uint8_t传输数据[40]={ 0x00,
0x01,
0x01,
0x01};

uint8_t传输计数器=0;

无符号字符接收缓冲区[10]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00};
Unsigned char *receiveBufferPointer;
unsigned char receiveCount =0;

void transmit_enable(void)
;

void main()
{//
停止WDT
WDT_a_hold (WDT_a_base);

//将









初始化引脚分配给USI_B0_GPIO _setAsiCI_PeripheralModuleFunctionInputPpinpin (JI2_OC_OC_OC_UST_PIB_UP_UP_USB_UP_USB_USB_USB_USB_USB_USB_USB_USB_USB_PI_USB_PI_USB0;USB_PI_PIG_PIG_PIG_PIC_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_0;USB_USB_USB_USB_USB_USB_0 = UPB_USB_USB_USB_USB_USB_PI_PI_PI_PI_PI_PI_
param.selectClockSource


&param);

//指定从属地址
USI_B_I2C_setSlaveAddress(USCI_B0_BAS,
SLAVE_ADDRESS
);//

启用I2C模块以启动操作
USI_B_I2C_ENable(USCI_B0_B0_base);

While (1){

Transmit_enable(Transmit_enable)//
启用传输中断USCI_B_Interrupt_I2C_Transbyte_Interrupt_I2C_Transble_I2C_DE_I2B0_CE_CE_ENB0







;






传输中断EBI_CE_CE_CE_CEB0



//避免竞争状态

//__bis_sr_register(LPM0 + GIE);
//__bis_sr_register(GIE);
//输入启用中断
的LPM0 __bis_sr_register(LPM0_bits + GIE);
__no_operation();

//delay直到传输完成
,同时(UCOBy_Baseb_Transfit_Receive_Transfit)
接收缓冲区={USI_Bef_Transf_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfect=<I2_Transfit_Transfit_Transfit_Transfit_Transfect=<I2_<I2_<I2_<I2_<I2_<_<I2_<=<_</











__bis_sr_register(LPM0_bits + GIE);
__no_operation();
}


















中断void transmit_enable(void){//设置传输模式USI_B_setMode(USCI_B0_base, USI_B_I2C_Transmit_mode );}****receive_enable(void){//set传输模式USI_B_I2C_base_USCI_BIOS_I2C_IE0, USCI_BIOS_BIOS_BIC_IE0, USCI_BIOS_BIOS_USCI_BIOS_BIC_IE0, USCI_BIOS_USCI_BIOS_USCI_BIOS_MODEF, USCI_BIOS_UBIOS_UBIOS_UBIOS_UBIC_IE0, USCI_正常

接收模式********BIOS_USCI_BIOS_USCI_正常 模式



********
//
//这是USI_B0中断向量服务例程。
////************************************************************************************************

#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#sedraneserma vector=USCI_B0_vector
__interrupt
#Elif defined(__GNU__)
__attribute__(interrupti_ISCI_B0_iver)__(中断(interlut_USB_ISCI_B0_I2C)
#endter_I2I =秒数(interlav_USCI_ST_USCI_ST_USCI_ST_USCI_ST_USCI_ST_USCI_STAC_USCI2_USCI_STAC_USCI2=)#)#ENB0






















//清除主中断状态
USI_B_I2C_clearInterrupt (USCI_B0_BBASE,
USI_B_I2C_Transmit_Interrupt );

//中断返回
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits)时退出LPM0;
}
中断;










启动案例USCI_I2C_UCRXIFG:{/DeceNAC_Receive=接收计数器1={eSCI_ReceiverB1<SCI_COUNT_ReceiverB1}

接收计数器<SCI_POBEF_STE=接收数<SCIF=接收byte7=<SCIF=接收数<SCIF=接收数<SCI_STEBIN1<SCIF=多字节SCIF=接收数<SCIF=接收数<SCIF>



else
{//
每次接收一个字节
*receiveBufferPointer++= USI_B_I2C_masterReceiveMultiByteNext(
USI_B0_BBASE
);
}

else
{//
接收最后一个字节
*receiveBufferPointer = USI_B_I2C_masterReceiveMultiByteNext(
USI_B0_B0_BASE
);
}_PMIC_EXIT }_B0;}}_LOCK_BAC_BAC_BAC_BAC_BAC_BAC_B20




我将MSP430F5529作为主设备与 TLV320DAC3100音频DAC作为从属设备连接。

根据 TLV320DAC3100从属地址的数据表,从属地址为0x30。

我使用库代码作为参考。

我无法生成中断。 本规范是否有任何问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Chirag,

    有关调试USCI I2C问题的帮助,请参阅以下应用说明。 这将帮助您缩小问题范围。  MSP430 MCU上常见eUSCI和USCI串行通信问题的解决方案

    我要问的第一个问题是,I2C线路上的上拉电阻器的值是多少?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jace:

    感谢您的回复。

    I2C线路上的上拉电阻值为2.2K。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Chirag,

    以上应用说明帮助您调试此问题? 您是否已捕获任何逻辑分析仪以查看通信中断的位置?