当前位置:首页 > 单片机 > 单片机
[导读] M4作为主机:  int main(void)  {  /* USER CODE BEGIN 1 */  /* USER CODE END 1 */  HAL_Init();  /* Configure the system clock */  SystemClock_Config();  /* Initialize all co

M4作为主机:

  int main(void)

  {

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  HAL_Init();

  /* Configure the system clock */

  SystemClock_Config();

  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_I2C1_Init();

  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  int i;

  HAL_I2C_Master_Receive_IT(&hi2c1, 0x22, bbb, 4);

  HAL_Delay(1000);

  if(i2c_flag == 1)

  {

  i2c_flag = 0;

  printf("naddr is 11:");

  for(i = 0; i < 4; i++)

  {

  printf("%02x ", aaa[i]);

  }

  printf("naddr is 22:");

  for(i = 0; i < 4; i++)

  {

  printf("%02x ", bbb[i]);

  }

  }

  }

  /* USER CODE END 3 */

  }

  M0作为从机:

  void IIC_GPIO_Configuration(void)

  {

  GPIO_InitTypeDef GPIO_InitStruct;

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 , ENABLE);

  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;

  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_IN

  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;

  GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;//open-drain

  GPIO_Init(GPIOB , &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;

  GPIO_Init(GPIOB , &GPIO_InitStruct);

  /* Connect PXx to I2C_SCL*/

  GPIO_PinAFConfig( GPIOB , GPIO_PinSource6, GPIO_AF_1);

  /* Connect PXx to I2C_SDA*/

  GPIO_PinAFConfig( GPIOB , GPIO_PinSource7, GPIO_AF_1);

  }

  void IIC_Configuration(void)

  {

  I2C_InitTypeDef I2C_InitStruct;

  /* I2C configuration */

  I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;

  I2C_InitStruct.I2C_AnalogFilter = I2C_AnalogFilter_Enable;

  I2C_InitStruct.I2C_DigitalFilter = 0x00;

  I2C_InitStruct.I2C_OwnAddress1 = 0x22;

  I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;

  I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

  I2C_InitStruct.I2C_Timing = 0xb0420f13;//100Kbits

  /* I2C Peripheral Enable */

  I2C_Cmd(I2C1, ENABLE);

  /* Apply I2C configuration after enabling it */

  I2C_Init(I2C1, &I2C_InitStruct);

  }

  int main(void)

  {

  peripheral_init();

  board_init();

  I2C1_isr.CR1 |= 0X08; //地址匹配产生中断

  while(1)

  {

  if(Recv_flag == 1)

  {

  Recv_flag = 0;

  if(I2C_GetFlagStatus(I2C1, I2C_FLAG_TCR) != SET)

  {

  printf("transfern");

  for( i = 0; i < 5; i++)

  {

  while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) != SET);

  I2C_SendData(I2C1, Data_to_M4_1[i]);

  }

  }

  }

  }

  }

  void I2C1_IRQHandler(void)

  {

  uint8_t i = 0;

  uint8_t j = 0;

  I2C_ClearITPendingBit(I2C1, I2C_ISR_ADDR);

  I2C1->ISR |= 0x00000001;

  I2C_ClearFlag(I2C1, I2C_FLAG_ADDR);

  printf("IIC irq in2n");

  Recv_flag = 1;


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上个月,爱立信刚刚传出“对中国区业务进行战略调整,研发岗大面积裁员”的消息。这几天,就有员工确认,爱立信“核心网”成为了此次裁员的“重灾区”。

关键字: 爱立信 通信

设计工程师为了解决ISI问题,常常需要在链路损耗和均衡技术之间做出综合考虑。泰克的SDLA软件不仅可以模拟发送端的Tx EQ和接收端的Rx EQ,还能模拟传输链路的不同损耗。

关键字: 通信 示波器 测试测量

5G网络相较于4G网络,具有更高的数据传输速率,能够支持更高的峰值速率,理论上峰值传输速率可以达到10Gbit/s,这比4G网络快了大约10到100倍。

关键字: 5G 通信 4G网络

泰克实时示波器支持TekExpressLVDS自动测量软件,涵盖LVDS时钟和数据的30多个测量项目,一键完成一致性测量。

关键字: 通信 示波器 测试测量

2024年2月26日,国际通信行业盛会MWC 24于西班牙巴塞罗那召开,全球通信及其相关供应链的顶尖企业荟聚一堂,展示移动通信领域的前沿研究成果,与国际行业同仁展开深入技术交流。三安集成作为射频前端整合解决方案服务提供商...

关键字: 三安集成 射频 通信

在意大利媒体对沃达丰的并购交易提出多种猜测之后,该公司2月28日发布声明称,正在就将沃达丰意大利公司(Vodafone Italy)出售给瑞士电信进行独家谈判,但尚未达成有约束力的协议。

关键字: 沃达丰 瑞士电信 通信 宽带

即将于2024年6月竣工交付的华为上海研发基地(青浦),不仅是上海市重点工程,也是长三角一体化示范区西岑科创中心的亮点项目。

关键字: 华为 通信 芯片

全球4G和5G的部署速度比商业服务的推进速度更快,6G预计到2030年也会到来,电信运营商如何以正确姿势迎接未来?

关键字: AI 通信 5G 6G

近日,华为又新增了多条专利信息,其中一项关于人体通信的“黑科技”最引人注目。

关键字: 华为 通信

近日,华为接连曝出两大重磅消息:一个事关智能汽车,另一个事关卫星通信。

关键字: 华为 通信 汽车电子
关闭
关闭