主题中讨论的其他器件:TLV320DAC3203、
大家好,
我很抱歉用这个无聊的问题来打扰你,但我需要帮助。
我正在尝试在 MSP430FR2633上使用 I2C、将主器件配置数据发送到 TLV320DAC3203。
我看着我能得到的一切作为例子,但我仍然有疑问。
您是否愿意在此处查看我的代码片段并在此方面为我提供指导?
提前感谢您的参与!
古斯塔沃
#包含
#包含
#include "driverlib.h"
#include "eusci_b_i2c.h"
#define MCLK_FREQ_MHz 2.8224
#define SLAVE_ADDRESS 0x30
configureClocks_to2822400Hz (); // MCLK 调整为2.8224 MHz
空 I2C_masterInit ()
{
_BIC_SR_register (GIE);
UCB0CTLW0 = UCSWRST; //启用软件复位
UCB0CTLW0 |= UCMODE_3 | UCMST | UCSSEL__SMCLK | UCSYNC; // I2C 主模式、SMCLK
UCB0BRW = 28; // fSCL = SMCLK/28 = 282200/28 = 100800Hz
UCB0I2CSA = SLAVE_ADDRESS; //从地址
UCB0CTL1 &=~μ H UCSWRST; // eUSCI_B 处于运行状态
UCB0CTLW0 &=~μ H UCSWRST; //清除软件复位,恢复操作
UCB0IE |= UCTXIE; //启用 TX 中断
UCB0IE |= UCNACKIE;
__ bis_SR_register (GIE); //通用中断使能
}
EUSCI_B_I2C_masterSendMultiByteStart (slave_address、regAddress);
eUSCI_B_I2C_masterSendMultiByteNext (slave_address、dataValues [j]);
eUSCI_B_I2C_masterSendMultiByteFinish (slave_address、dataValues [ numDataValues - 1]);
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//为 I2C 配置 I/O 引脚
// P1.7-SMCLK
P1SEL |= BIT6 + BIT7;
P1SEL2 |= BIT6 + BIT7;
I2C_masterInit (); //初始化 I2C
//发送 I2C 启动条件
SendMyValues ()
//在函数 SendMyValues ()内部,我正在使用以下函数:
// eusci_b_i2c.c (驱动程序库- eusci_b_i2c 模块的驱动程序。):
// eUSCI_B_I2C_masterSendMultiByteStart (slave_address、regAddress);
// eUSCI_B_I2C_masterSendMultiByteNext (slave_address、dataValues [j]);
// eUSCI_B_I2C_masterSendMultiByteFinish (slave_address、dataValues [ numDataValues - 1]);i2cccccc
Free (dataValues); //为 dataValues 释放动态分配的内存
__ bis_SR_register (CPUOFF); //进入低功耗模式
}