完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近愁于I2C,例程实在太少了,,,
一个器件的I2C为: 写地址是0XA6. 初始化代码为: ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | //80mhz SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinConfigure(GPIO_PB2_I2C0SCL); GPIOPinConfigure(GPIO_PB3_I2C0SDA); GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3); GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2 ); I2CMasterInitExpClk(I2C0_MASTER_BASE, SysCtlClockGet(), true); //400kbps I2CMasterEnable(I2C0_MASTER_BASE); 应该没问题吧... 可往往下就不会写了... 对这几个函数十分不明白 I2CMasterSlaveAddrSet (unsigned long ulBase, unsigned char ucSlaveAddr, tBoolean bReceive) 这个函数是设置从器件的地址的吧??最后一个参数定义是写地址还是读地址.. I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,0XA6,false);此处应该这样写吧?? 还有就是这两个函数 I2CMasterControl I2CMasterDataPut 如果要对器件0x45这个8位寄存器读一个字节,那这个程序应该怎么写呢? 那如果多0x46这个寄存器读4个字节呢? 谢谢~ |
|
相关推荐
3 个讨论
|
|
1. I2CMasterSlaveAddrSet (unsigned long ulBase, unsigned char ucSlaveAddr, tBoolean bReceive)
最后一个参数用来指示发送写命令还是读命令。 为0 表示发送写命令,为1表示发送读命令。 2. I2CMasterDataPut(I2C0_BASE, DAT);把要写的数据写放到发送寄存器中 I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); 把要写的数据单次或连续发送到总线上. 3. 对器件0X45的寄存器读操作应该这样写: I2CMasterSlaveAddrSet(I2C0_BASE, ulSlaveAddr, 0); //其中ulSlaveAddr 为I2c从设备的地址. I2CMasterDataPut(I2C0_BASE, 0x45); // 0X45为设备寄存器地址 I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); I2CMasterSlaveAddrSet(I2C0_BASE, ulSlaveAddr, 1); //其中ulSlaveAddr 为I2c从设备的地址. pui32DataRx = I2CSlaveDataGet(I2C0_BASE); 中间略掉了ACK应答判断。 |
|
|
|
|
|
pingfandeshijie 发表于 2020-4-8 15:48 经过调试 正确的方式应该是: unsigned int ADXL_Single_Read(unsigned int reg) [ unsigned int back; I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,SlaveAddress,false); I2CMasterDataPut(I2C0_MASTER_BASE,reg); I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START); while(I2CMasterBusy(I2C0_MASTER_BASE)); I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,SlaveAddress,true); I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_SINGLE_RECEIVE); while(I2CMasterBusy(I2C0_MASTER_BASE)); back=I2CMasterDataGet(I2C0_MASTER_BASE); return(back); ] 多谢回答 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
869 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2055 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3792 浏览 4 评论
5150 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1843 浏览 1 评论
CC3100BOOST使用CC3200lunchXL进行烧录
837浏览 2评论
74浏览 2评论
83浏览 2评论
72浏览 2评论
102浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 14:50 , Processed in 0.737234 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号