SCCB_Stop();
if(!SCCB_Start())
{
//return 0;
}
SCCB_SendByte( DEV_ADR + 1 ); /* 器件地址 */
if(!SCCB_WaitAck())
{
//SCCB_Stop();
//return 0;
}
while(length)
{
*pBuffer = SCCB_ReceiveByte();
if(length == 1)
{
SCCB_NoAck();
}
else
{
SCCB_Ack();
}
pBuffer++;
length--;
}
SCCB_Stop();
return 1;
}
/*
* IIC.h
*
* Created on: 2017年11月25日
* Author: Admin
*/
#ifndef IIC_H_
#define IIC_H_
#include "common.h"
#define CPU_F ((double)8000000) //外部高频晶振8MHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define SCCB_DELAY() delay_us(1)
#define DEV_ADR 0x90//设备地址
extern void SCCB_GPIO_init(void);
extern int SCCB_WriteByte( uint16 WriteAddress , uint8 SendByte);
extern int SCCB_ReadByte(uint8 *pBuffer, uint16 length, uint8 ReadAddress);
#endif /* IIC_H_ */
在主函数里面初始化一下时钟再调用一下SCCB_GPIO_init();之后就可以用SCCB_ReadByte和SCCB_WriteByte进行单字节的IIC通信了
SCCB_WriteByte
SCCB_WriteByte
[1] [2]