资源简介

使用stc15w,内涵stc库函数,串口中断接收数据,使用消息队列,通过trigger脚来通知主机读取,亲测试通过。

资源截图

代码片段和文件信息

#include “user.h“

#define IIC_NUM 1

#define write 0xfe
#define read 0x01

#if (IIC_NUM>0)
#define IIC_SDAOut()    //GPIO_InitStructure_Mode_OUT_PP(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin) 
#define IIC_SDAIn()     //GPIO_InitStructure_Mode_IPU(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin) 

#define IIC_SDA_1()     GPIO_SetBits(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin);
#define IIC_SDA_0()     GPIO_ResetBits(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin);
#define IIC_SCL_1()     GPIO_SetBits(IIC_cfg[IIC_busId].SCLPortIIC_cfg[IIC_busId].SCLPin);
#define IIC_SCL_0()     GPIO_ResetBits(IIC_cfg[IIC_busId].SCLPortIIC_cfg[IIC_busId].SCLPin);
#define IIC_SDA_STATE() GPIO_ReadInputDataBit(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin)
#define IIC_Delay()     IIC_delay(IIC_cfg[IIC_busId].IICDelay_us)

#define SetBusId(id)    IIC_busId=id


typedef struct _IIC_CFG_{
    uint8_t IICDelay_us;
    GPIO_TypeDef* SDAPort;
    uint16_t SDAPin;
    GPIO_TypeDef* SCLPort;
    uint16_t SCLPin;
}IIC_CFG;


static const IIC_CFG IIC_cfg[IIC_NUM]={
     //根据实际情况调整频率,此测试程序100us最佳
        {100SDA2_PORTSDA2_PINSCL2_PORTSCL2_PIN}
            
};
static uint8_t IIC_busId=0;

#else
#define IIC_SDAOut()    
#define IIC_SDAIn()     
#define IIC_SDA_1()     
#define IIC_SDA_0()     
#define IIC_SCL_1()     
#define IIC_SCL_0()     
#define IIC_SDA_STATE() 0
#define IIC_Delay()    
#define SetBusId(id)
#endif





void IIC_delay(uint8_t x)
{
    delay_us(x);
}



void IIC_Start(void)
{
/* 当SCL高电平时,SDA出现一个下跳沿表示IIC总线启动信号 */
   
IIC_SDA_1();
IIC_SCL_1();
IIC_Delay();
IIC_SDA_0();
IIC_Delay();
IIC_SCL_0();
IIC_Delay();
}


void IIC_Stop(void)
{
/* 当SCL高电平时,SDA出现一个上跳沿表示IIC总线停止信号 */
IIC_SCL_0();
IIC_Delay();
IIC_SDA_0();
IIC_Delay();
IIC_SCL_1();
IIC_Delay();
IIC_SDA_1();
}

uint8_t IIC_WaitAck(void)
{
    uint8_t wait=0xff;
    
IIC_SDA_1(); /* CPU释放SDA总线 */
    IIC_SDAIn();
   IIC_Delay();
    
IIC_SCL_1(); /* CPU驱动SCL = 1 此时器件会返回ACK应答 */
IIC_Delay();
    
    
    while(wait--)
    {
        
        if(!IIC_SDA_STATE())
        {
            IIC_SCL_0();
     IIC_Delay();
            IIC_SDAOut();
     return true;
        } 
        IIC_Delay();
    }
    IIC_SDAOut();
    return false;
    



}


void IIC_Ack(void)
{

IIC_SDA_0(); /* CPU驱动SDA = 0 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_1(); /* CPU产生1个时钟 */
IIC_Delay();
//Delay_us(1);
IIC_SCL_0();
IIC_Delay();
//Delay_us(1);
IIC_SDA_1(); /* CPU释放SDA总线 */

}


void IIC_NAck(void)
{
IIC_SDA_1(); /* CPU驱动SDA = 1 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_1(); /* CPU产生1个时钟 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_0();
IIC_Delay();
// Delay_us(1);
}

uint8_t IIC_SendByte(uint8_t _ucByte)
{
uint8_t i;

/* 先发送字节的高位bit7 */
for (i = 0; i < 8; i++)
{
if (_ucByte & 0x80)
{
IIC_SDA_1(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-04 09:21  IIC_MASTER\
     文件        6567  2018-01-04 09:25  IIC_MASTER\iic.c
     文件         521  2017-12-27 17:07  IIC_MASTER\iic.h
     文件        1777  2018-01-04 09:27  IIC_MASTER\iic_stc_demo.c
     文件          43  2018-01-04 09:26  IIC_MASTER\readme.txt
     目录           0  2018-01-04 09:16  IIC_SLAVE\
     目录           0  2018-01-04 09:16  IIC_SLAVE\Listings\
     文件       42293  2018-01-03 18:47  IIC_SLAVE\Listings\PA3.m51
     文件       14458  2017-12-11 16:11  IIC_SLAVE\Listings\USART.lst
     文件         548  2018-01-02 12:20  IIC_SLAVE\Listings\apd.lst
     文件        1356  2018-01-03 18:37  IIC_SLAVE\Listings\delay.lst
     文件         569  2018-01-02 12:20  IIC_SLAVE\Listings\eeprom.lst
     文件        3679  2018-01-03 18:37  IIC_SLAVE\Listings\fun.lst
     文件         555  2018-01-02 12:20  IIC_SLAVE\Listings\func.lst
     文件       10787  2018-01-03 18:37  IIC_SLAVE\Listings\gpio.lst
     文件        9275  2018-01-03 18:37  IIC_SLAVE\Listings\iic_slave.lst
     文件         548  2018-01-02 12:20  IIC_SLAVE\Listings\key.lst
     文件        1636  2018-01-03 18:37  IIC_SLAVE\Listings\main.lst
     文件        4047  2018-01-03 18:37  IIC_SLAVE\Listings\message.lst
     文件         562  2018-01-02 12:20  IIC_SLAVE\Listings\power.lst
     文件         576  2018-01-02 12:20  IIC_SLAVE\Listings\protect.lst
     文件        2336  2018-01-03 18:37  IIC_SLAVE\Listings\timer.lst
     文件         576  2018-01-02 12:20  IIC_SLAVE\Listings\trigger.lst
     文件        4798  2018-01-03 18:37  IIC_SLAVE\Listings\uart.lst
     目录           0  2018-01-04 09:16  IIC_SLAVE\objects\
     文件      253063  2018-01-03 18:47  IIC_SLAVE\objects\PA3
     文件         934  2017-12-27 13:56  IIC_SLAVE\objects\PA3.build_log.htm
     文件        9538  2018-01-03 18:47  IIC_SLAVE\objects\PA3.hex
     文件         257  2018-01-03 18:47  IIC_SLAVE\objects\PA3.lnp
     文件      127883  2018-01-03 18:47  IIC_SLAVE\objects\PA3.plg
     文件         105  2018-01-02 12:20  IIC_SLAVE\objects\apd.__i
............此处省略99个文件信息

评论

共有 条评论