用553做蓝牙音箱的主控,用到TI的数字功放,.docVIP

用553做蓝牙音箱的主控,用到TI的数字功放,.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用2553做蓝牙音箱的主控,用到TI的数字功放, main中主要实现4个功能:a.初始化硬件(不包括功放) b.初始化功放(通过I2C给功放寄存器赋初值) c.按键控制 d.显示控制 功能分步调试,所以没发全部代码,I2C抄官方i2c-12例程,所以没写注释。 初始化功放:对指定功放寄存器写单字节数据,或者先读出指定寄存器数据计算后再写入该寄存器;读指定寄存器时,先写该寄存器地址,然后读取当前地址数值。 不是非要抄官方的例程,初次调试希望实现功能先,I2C初始化按照例程中的setup,每次调用TX RX初始化一次,按照对UCSWRST的理解,I2C初始化一次就够,把SA放到TX RX调用中。 在DS中,如果没理解错,TX RX Flag共用向量,Status Flag共用另一个,例程中TX\RX也是写在一个ISR中,所以也是照搬。 注释我贴的代码 #ifndef SIMPLE_I2C_H #define SIMPLE_I2C_H #endif #define uchar unsigned char uchar TRFlag; //判断发送还是接收 1-发送 uchar DataFlag=0; //判断只需发寄存器地址还是需加数据 0-加数据 uchar TxData[2]; //装待发送寄存器地址和数据 uchar *PTxData; //指向上面数组 //uchar Rxdata; uchar Txctr; //发送计数 uchar I2C_buf1; //TX RX公用数据存放 void init_i2c(void); void I2Cm_Tx(uchar valueReg,uchar RegAddress,uchar DeviceAddress); //收发功放寄存器数据I2C_buf1、功放寄存器地址、功放地址 void I2Cm_Rx(uchar valueReg,uchar RegAddress,uchar DeviceAddress); #pragma vector=USCIAB0TX_VECTOR __interrupt void USCIAB0TX_ISR(void){ if(TRFlag==1){ //发送标志 if(Txctr){ // Txctr--; UCB0TXBUF=*PTxData++; //no data transmit __bic_SR_register_on_exit(CPUOFF); // 根据例程此句不应有,但如果没有,不会发STP,if(Txctr)只执行一次,程序卡在while STP处;若有此句,跳出低功耗,if(Txctr)也只执行一次,实测SDA无STP,程序不会卡在while STP } else{ //实际没有执行 UCB0CTL1|=UCTXSTP; IFG2=~UCB0TXIFG; __bic_SR_register_on_exit(CPUOFF); } } else{ //接收 I2C_buf1=UCB0RXBUF; UCB0CTL1|=UCTXSTP; IFG2=~UCB0RXIFG; __bic_SR_register_on_exit(CPUOFF); } } void I2Cm_Tx(uchar valueReg,uchar RegAddress,uchar DeviceAddress){ _DINT(); TRFlag=1; //发送标志 if(DataFlag==1){ //判断TX为RX间接调用还是直接调用 Txctr=1; DataFlag=0; //避免影响后续直接调用TX } else{ Txctr=2; } IE2=~UCB0RXIE; //初始化TX while(UCB0CTL1UCTXSTP); UCB0CTL1|=UCSWRST; UCB0CTL0=UCMST+UCMODE_3+UCSYNC; UCB0CTL1=UCSSEL_2+UCSWRST; //选择SMCLK12分频,默认DCO 80

文档评论(0)

woai118doc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档