- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 三到六年级的英语单词汇总.docx
- 2023年11月四川省德昌生态环境监测站招考4名就业见习人员笔试历年高频考题(难、易错点荟萃)答案带详解附后.docx
- C103116【基础】2025年东北师范大学045101教育管理《841学校组织与管理之教育管理学》.pdf VIP
- ABB 传动变频器 ACS880-04(200-600 kW)传动模块硬件手册 安装及使用手册.pdf
- (入党积极分子)思想汇报.doc VIP
- 入党积极分子(发展对象)培训班学习心得体会.docx VIP
- 物业二次装修管理培训课件.pptx
- 祭母舅的祭文.docx
- 国家开放大学电大本科《社会保障学》2024期末试题及答案(试卷号:1283).doc VIP
- 公路工程标准施工招标文件 2018年版(完整版).doc
文档评论(0)