历史上的今天
今天是:2024年09月07日(星期六)
2020年09月07日 | STM8 中I2C读写函数
2020-09-07 来源:eefocus
void I2C_write(u8 Addr, u8 *WriteData, u8 length)
{
/* Send STRAT condition */
I2C_GenerateSTART(ENABLE);
/* Test on EV5 and clear it */
while(!I2C_CheckEvent(I2C_EVENT_MASTER_START_SENT));
/* Send EEPROM address for write */
I2C_Send7bitAddress(Addr, I2C_DIRECTION_TX);
/* Test on EV6 and clear it */
while(!I2C_CheckEvent(I2C_EVENT_MASTER_ADDRESS_ACKED));
I2C_ClearFlag(I2C_FLAG_ADDRESSSENTMATCHED);// must add
for(int i = 0; i I2C_SendData(WriteData[i]); /* Test on EV8 and clear it */ while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING)); } /* Send STOP condition */ I2C_GenerateSTOP(ENABLE); } void I2C_Read(u8* pBuffer, u8 ReadAddr, u8 NumByteToRead) { while(I2C->SR3&0x02); I2C->CR2 |= 0x01; while(!(I2C->SR1 & 0x01)); I2C->DR = ReadAddr; while(!(I2C->SR1 & 0x02)); I2C->SR1; I2C->SR3; while(NumByteToRead) { if(NumByteToRead == 1) { I2C->CR2 &= ~0x04; I2C->CR2 |= 0x02; } if(I2C->SR1 & 0x40) { *pBuffer=I2C->DR; pBuffer++; NumByteToRead--; } } I2C->CR2 |= 0x04; }
上一篇:STM8 低功耗时钟管理
下一篇:STM8时基单元
史海拾趣
|
KF750按键的蓝光是多个圈圈层叠,触摸的时候有“涟漪”的效果。今天有个客户想在一个产品上把原来的普通按键做成这个效果,触摸的好处理,但这个发光的材料好像是EL片。坛子里有知道的朋友吗?多谢! … 查看全部问答> |
|
我是一名初学8051者 最近看过很多关于8051的原理书 对单片机的基本原理略懂一二 想动手做些实验 一方面想加强自己对汇编指令或者说编程的熟悉程度 另一方面想对单片机有更彻底的了解 会些基本的应用 不知道怎么去选择购买板 ...… 查看全部问答> |
|
FL2440的板子,修改12M的晶体为16.9344M后,无法启动??? 请教高手们: 原FL2440的开发板,晶体为12MHz,修改为16.9344M后,无法启动,不知何因? 先说一下FL2440的bootloader的组成: 飞凌开发板提供的bootloader由uboot和eboot两部分组成,前面的uboot实现 ...… 查看全部问答> |
|
用IAR给MSP430f4152烧写程序,总提示找不到单片机。仿真器用的UIF。 出错信息是: IarIdePm The debugging session could not be started。 Either the debugger initialization failed,or else the file \"F:\\Examination\\E-Meter\\Debug\\ ...… 查看全部问答> |




