91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 90KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-02
  • 語言: 其他
  • 標簽: 模擬I2C??從機??Slave??

資源簡介

模擬I2C從機代碼 主機代碼 以及相對應的波形 時序要求 I2C最高時鐘頻率需要根據MCU性能調整 主頻 指令執行時間 中斷響應速度等

資源截圖

代碼片段和文件信息

#include?“myiic.h“
#include?“delay.h“
////////////////////////////////////////////////////////////////////////////////// ?
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//Mini?STM32開發板
//IIC?驅動函數 ???
//正點原子@ALIENTEK
//技術論壇:www.openedv.com
//修改日期:2010/6/10?
//版本:V1.0
//版權所有,盜版必究。
//Copyright(C)?正點原子?2009-2019
//All?rights?reserved
//////////////////////////////////////////////////////////////////////////////////? ??

//初始化IIC
void?IIC_Init(void)
{
//RCC->APB1ENR|=1<<22;//先使能外設iic2時鐘?
? RCC->APB2ENR|=1<<3;//先使能外設IO?PORTB時鐘? ?
GPIOB->CRL&=0XFFFFFF00;//PB0/1?推挽輸出
GPIOB->CRL|=0X00000033; ???
//GPIOB->ODR|=3;
//GPIOB->ODR&=0xfffffffc;
?
}
//產生IIC起始信號
void?IIC_Start(void)
{
IIC_SDA=1; ?? ??
IIC_SCL=1;
delay_us(5);
? IIC_SDA=0;//START:when?CLK?is?highDATA?change?form?high?to?low?
delay_us(5);
IIC_SCL=0;//鉗住I2C總線,準備發送或接收數據?
} ??
//產生IIC停止信號
void?IIC_Stop(void)
{
IIC_SCL=0;
IIC_SDA=0;//STOP:when?CLK?is?high?DATA?change?form?low?to?high
? delay_us(10);//12us
IIC_SCL=1;?
delay_us(20);//21us
IIC_SDA=1;//發送I2C總線結束信號
delay_us(10); ???
}
//等待應答信號到來
//返回值:1,接收應答失敗
//????????0,接收應答成功
u8?IIC_Wait_Ack(void)
{
u8?tempbit=0;

IIC_SCL=0;
IIC_SDA=1;
SDA_IN();????????//SDA設置為輸入??
delay_us(15);//17us
tempbit?=?READ_SDA;
IIC_SCL=1;
??delay_us(10);//11us
IIC_SCL=0;
delay_us(5);
SDA_OUT();???????//SDA設置為輸出??
if(tempbit==1)
{
return?0;? //返回noACK
}
else
{
return?1;? //返回ACK
}
}?
//產生ACK應答
void?IIC_Ack(void)
{
IIC_SCL=0;
IIC_SDA=0;
delay_us(8);//10us
IIC_SCL=1;
delay_us(8);//10us
IIC_SCL=0;
}
//不產生ACK應答 ????
void?IIC_NAck(void)
{
IIC_SCL=0;
IIC_SDA=1;
delay_us(8);//10us
IIC_SCL=1;
delay_us(8);//10us
IIC_SCL=0;
} ? ?????
//IIC發送一個字節
//返回從機有無應答
//1,有應答
//0,無應答 ??
void?IIC_Send_Byte(u8?txd)
{????????????????????????
u8?t;??????
for(t=0;t<8;t++)
{???
IIC_SCL=0;
delay_us(5);//6.25us
if(txd&0x80)
IIC_SDA=1;
else
IIC_SDA=0;
//delay_us(1);???
IIC_SCL=1;
delay_us(7);//8us
txd<<=1;? ??
}
}? ????
//讀1個字節,ack=1時,發送ACK,ack=0,發送nACK???
u8?IIC_Read_Byte(void)
{
unsigned?char?ireceive=0;
IIC_SDA=1;//釋放SDA,開始接收數據
SDA_IN();?//SDA設置為輸入
??for(i=0;i<8;i++)
{
????IIC_SCL=0;?
????delay_us(8);//9us
IIC_SCL=1;
????receive<<=1;
????if(READ_SDA)receive++;???
delay_us(3);//4.5us?
??}
?IIC_SCL=0;?
???SDA_OUT();//SDA設置為輸出??
???return?receive;
}

void?IIC_M_BufWrite(u8?*pBuffer)
{
u8?i;
// IIC_Start();?????? ?
// IIC_Send_Byte(0xA0); ??
// IIC_Wait_Ack();
// while(NumToWrite--)
// {
// IIC_Send_Byte(*pBuffer);?????// ???
// IIC_Wait_Ack();?
// pBuffer++;
// }
// IIC_Stop();//
// delay_ms(1);

IIC_Start();
??IIC_Send_Byte(0xa0);
IIC_Wait_Ack();
for(i=0;i<*pBuffer;i++)
{
IIC_Send_Byte(*(pBuffer+i));
IIC_Wait_Ack();
}
IIC_Stop();
}

void?IIC_M_BufRead(u8?*pBuffer)
{
u8?ilen?=?0;
// IIC_Start();?? ? ???
// IIC_Send_Byt

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3843??2015-02-11?17:32??模擬I2C?從機\I2C?Master.c
?????文件????????4440??2015-03-01?14:06??模擬I2C?從機\I2C?Slave.c
?????文件?????2622554??2015-01-21?10:58??模擬I2C?從機\I2C?時間.bmp
?????文件??????424482??2015-03-01?14:29??模擬I2C?從機\波形.bmp
?????目錄???????????0??2015-03-01?14:01??模擬I2C?從機\

評論

共有 條評論