搜索
bottom↓
回复: 3

最近几天学cube 做个stm32 f030f4 I2c主从通讯

[复制链接]

出0入8汤圆

发表于 2017-1-13 19:14:41 | 显示全部楼层 |阅读模式
本帖最后由 haiyu 于 2017-1-13 19:23 编辑

最近几天学cube  写个I2c主从通讯
主机发送一个地址位上总线 对应地址位的从机发送一组数据到总线上;
主机通过i2c读取多个stm32f030F4 采集ADC值
ps : 从机例子只能固定发送数据 不能读主机数据
只能说玩玩而已   切勿商用
主机查询某一地址 然后在串口中打印:
  1.          printf("add: %d\n",add);
  2.                 ERROR_data=HAL_I2C_Master_Receive(&hi2c1,add,I2c_Buf_Read,20,2000);
  3.                 if(ERROR_data==HAL_TIMEOUT)
  4.                 {
  5.                  MX_I2C1_Init();
  6.                 __HAL_I2C_ENABLE_IT(&hi2c1,I2C_IT_ADDRI);
  7.                  printf("I2C超时错误\n\r");
  8.                 }else if(        ERROR_data==HAL_ERROR)
  9.                  {
  10.                 __HAL_I2C_ENABLE_IT(&hi2c1,I2C_IT_ADDRI);
  11.                 printf("I2C错误\n\r");
  12.                 }
  13.                 else if(ERROR_data==HAL_BUSY)
  14.                 {
  15.                 __HAL_I2C_ENABLE_IT(&hi2c1,I2C_IT_ADDRI);
  16.                 printf("I2C总线忙\n\r");
  17.                 }
  18.                
  19.          HAL_Delay(1000);
  20.          for (i=0;i<20;i++)
  21.          {
  22.                         printf("0x%02X ", I2c_Buf_Read[i]);
  23.                  //I2c_Buf_Read[i]=0;
  24.                 }
  25.           printf("\n");
  26.                  for (i=0;i<20;i++)
  27.          {
  28.                  I2c_Buf_Read[i]=0;
  29.                 }
  30.                
复制代码

从机用cube配置好波特率 上下时间 地址位 开 I2c中断
用中断函数在大循环里不断发送
HAL_I2C_Slave_Transmit_IT(&hi2c1,&I2c_Buf_Write[0],20);         //发送数据
从而实现I2c主从通讯 ;
附件有cube配置生成的工程
注意总线上要焊接4.7~10K的上拉电阻

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入4汤圆

发表于 2017-1-13 20:57:07 | 显示全部楼层
过年了还在玩技术的,点个赞。

出0入8汤圆

发表于 2017-1-14 11:04:00 来自手机 | 显示全部楼层
这个软件是个代码生成器?

出0入8汤圆

 楼主| 发表于 2017-1-14 16:42:19 | 显示全部楼层
justdomyself 发表于 2017-1-14 11:04
这个软件是个代码生成器?

cubemx  
st的初始化软件 用它可以配置好初始化的流程 让你直接去写代码 而不用考虑底层的东西 不用去看寄存器了~~
好早以前想学stm32 但看了一对堆的手册寄存器就放弃了 现在用这个已配置好 然后就写几个回调函数就可以用了
但其效率低了  不过上手容易了 起码有信心去搞程序 不用考虑配置问题~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 10:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表