历史上的今天
返回首页

历史上的今天

今天是:2024年12月27日(星期五)

正在发生

2019年12月27日 | IIC通信建立过程

2019-12-27 来源:51hei

#include "IIC.h"
#include "systick.h"
//在高速模式下的IIC通信
/*
SCL初始化,因为SCL一直是输出模式,
*/
void IIC_init(void)
{
RCC->AHB1ENR |= (1<<1);
GPIOB->MODER &=~(3<<16);
GPIOB->MODER |= (1<<16);
GPIOB->OTYPER |= (1<<8);
GPIOB->OSPEEDR &=~(3<<16);
GPIOB->OSPEEDR |= (2<<16);
GPIOB->ODR |= (1<<8);

/*
SDA有2种状态,一个接收,一个发送,这里是发送
*/
void IIC_SDA_Out(void)
{
GPIOB->MODER &=~(3<<18);
GPIOB->MODER |= (1<<18);
GPIOB->OTYPER |= (1<<9);
GPIOB->OSPEEDR &=~(3<<18);
GPIOB->OSPEEDR |= (2<<18);
GPIOB->ODR |= (1<<9);
}
/*
SDA接收状态
*/
void IIC_SDA_In(void)
{
GPIOB->MODER &=~(3<<18);
}

/*
IIC开始建立过程
*/
void IIC_Start(void)
{
IIC_SDA_Out();
SCL_H;
SDA_H;
SysTick_Delay01us(3);
SDA_L;
SysTick_Delayus(2);
SCL_L;
}
//
/*
IIC结束过程
*/
void IIC_Stop(void)
{
IIC_SDA_Out();
SCL_L;
SDA_L;
SysTick_Delayus(1);
SCL_H;
SysTick_Delayus(2);
SDA_H;
}
/
/*
函数参数:主机发送一个字节数据
返回值:从机的应答有没有效

*/
u8 IIC_Sendbyte(u8 data)
{
u8 i,ack;
IIC_SDA_Out();
for(i=0;i<8;i++)
{
  SCL_L;//SCL拉低等待数据
  if(data&(0x80>>i))//IIC是从最高位开始发送书记
  {
   SDA_H;
  }
  else //发的数据是0
  {
   SDA_L;
  }
  SysTick_Delayus(2);
  SCL_H;//拉高开始发送数据
  SysTick_Delayus(2);
  SCL_L;/拉低表示发送完成
}
//MCU接收从机应答
IIC_SDA_In();
SCL_L;//准备接收数据
SysTick_Delayus(2);
SCL_H;//开始接收数据
if(SDA)//应答无效
{
  ack = 1;
}
else //有效应答
{
  ack = 0;
}
SysTick_Delayus(2);/
SCL_L;//接收完成
SysTick_Delayus(2);
return ack;
}
/
/*
函数功能:主机接收从机的数据
参数:主机给从机的应答
*/
u8 IIC_Recvbyte(u8 ack)
{
u8 i,data=0;
IIC_SDA_In();
for(i=0;i<8;i++)
{
  SCL_L;/拉高准备数据
SysTick_Delayus(2);
  SCL_H;//开始发送数据
  if(SDA)/无效
  {
  data |= 1<<(7-i);
  }
  else //0
  {
  data &=~( 1<<(7-i));
  }
  SysTick_Delayus(2);/
  SCL_L;//拉低结束发送数据
}
//MCU发送应答
IIC_SDA_Out();
SCL_L;/准备应答
if(ack)//无效应答
{
  SDA_H;
}
else //
{
  SDA_L;
}
SysTick_Delayus(2);
SCL_H;//拉高开始发送
SysTick_Delayus(2);
SCL_L;//表示完成
SysTick_Delayus(2);/
return  data;
}

推荐阅读

史海拾趣

DFI公司的发展小趣事

DFI深知产品质量对于企业的重要性。因此,公司从设计到生产,都实施了严格的质量管理。在产品设计阶段,DFI的专责团队会对电路、机构和零组件进行严格的测试与检验,确保每个专案的设计和质量都具备一致的高质量。在生产阶段,所有产品出货前都必须通过完整的产品内部检验,以确保产品的可靠性和耐久性。这些质量管理措施使DFI的产品在市场上享有良好的口碑,也为公司赢得了众多客户的信任。

Anderson Electronics Inc公司的发展小趣事

在取得一系列辉煌成就的同时,Anderson Electronics Inc公司始终关注可持续发展和环境保护。公司积极推行绿色生产理念,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还关注社会责任和公益事业,积极参与社会公益活动,回馈社会。展望未来,公司将继续坚持创新驱动、质量为本的发展理念,不断推动技术创新和产业升级,为电子行业的发展贡献更多的力量。


请注意,以上内容仅为一个通用的框架,具体的故事内容需要根据Anderson Electronics Inc公司的实际情况进行创作。在撰写时,您可以结合公司的历史背景、发展历程、技术创新、市场拓展、国际合作、产业升级等方面的信息进行详细描述,以展现公司在电子行业中的发展历程和成就。

GS Yuasa Battery Sales UK Ltd.公司的发展小趣事

面对电子行业的快速变革和市场竞争的加剧,Anderson Electronics Inc公司积极进行产业升级和智能制造的转型。公司引进了先进的生产设备和技术,实现了生产过程的自动化和智能化。同时,公司还加大了对研发人员的培养和引进力度,建立了一支高素质的研发团队。通过产业升级和智能制造的转型,公司成功提升了生产效率和产品质量,进一步巩固了市场地位。

静芯微电子(ElecSuper)公司的发展小趣事

静芯微电子深知产品质量对于企业的重要性,因此建立了完善的质量管理体系。公司从原材料采购、生产制造到产品检测等各个环节都实行严格的质量控制和管理,确保每一款产品都符合高标准的质量要求。同时,静芯微电子还引进了先进的检测设备和技术手段,对产品质量进行全面检测和评估。这些措施保证了静芯微电子产品的稳定性和可靠性,赢得了客户的信任和好评。

EWC Controls公司的发展小趣事

随着公司规模的不断扩大和技术实力的增强,EWC Controls公司开始拓展全球市场。公司积极参加国际展会和交流活动,与全球各地的客户建立联系和合作。同时,EWC Controls公司还针对不同国家和地区的市场需求和法律法规要求,对产品进行适应性改进和优化。这些努力使得公司的产品逐渐走向国际市场,并赢得了良好的口碑和市场份额。

All Sensors公司的发展小趣事

All Sensors在传感器技术领域一直保持着世界领先的地位。公司掌握着核心的MEMS传感器技术,如独有的CoBeam2 TM传感器技术等。这些技术的应用使得All Sensors的传感器在精度、稳定性和寿命等方面都达到了行业领先水平。同时,公司还不断投入研发,推出更多创新产品,满足不断变化的市场需求。

问答坊 | AI 解惑

请问以下C代码是什么意思?高手请进!!!

请问以下C代码是什么意思?请问如下代码的含义:据说hook function 是钩子函数,但我并没有在网上搜索到类似的函说说明。不管能否解答都欢迎大家来讨论 typedef void (* PFN_HOOK )(void);            &n ...…

查看全部问答>

现在可以用C/C++对FPGA编程吗?

各位大虾:        有人用C/C++ 对FPGA编程吗?有请分享!谢谢!…

查看全部问答>

各位达人,有在上海ATMEL做软件工程师的吗

这个公司怎么样, 在里面的出来说说:)…

查看全部问答>

国内最好的电子设计网站是那些???

国内最好的电子设计网站是那些???…

查看全部问答>

基于飞思卡尔ARM9内核的i.mx27嵌入式开发板在视频传输领域的应用

1.i.MX27产品特性和应用范围: i.MX27是高清视频首选,提供了更高的灵活性和更强大的多媒体处理能力,成为IP视频和语音(V2IP)无绳和移动电话、智能远程控制、POS终端和其他大量无线应用的理想选择。同时,i.MX27开发板的主频从i.MX21的 266MHZ提高 ...…

查看全部问答>

请问香主,如何找到寄存器地址?

                                 看完了STM32的数据手册和参考手册,无法找到某一个具体寄存器的地址,文档中给出的都是偏移地址,而且也没有基地址 ...…

查看全部问答>

版主,请教一下定时器捕获问题。

版主,请教一个问题。我用的是STM8S103K3的片子,由于是第一次使用ST单片机,所以很多的地方不明白。我现在用TIM2 的第三通道来捕获一个脉冲信号,并要把脉冲宽度读出来。我按着数据手册上一步一步的做,结果还是没有出来,能在进入捕获中断, ...…

查看全部问答>

关于stm8控制LED问题

在仿真时出错,下面是出错的问题,请高手指教 代码segment\'ram0\'BYTES.Roo ds.b 1.Ro1 ds.b 1.Ro2 ds.b 1.Ro3 ds.b 1.Ro4 ds.b 1.Ro5 ds.b 1.Ro6 ds.b 1.Ro7 ds.b 1.Ro8 ds.b 1MOV TIM1_SMCR,#00HBRES TIM1_ETR,#6MOV TIM1_PSCRH,#00HMOV TIM1_P ...…

查看全部问答>