6564|13

965

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

急,1000芯币求STM8硬件IIC双机通信程序,,, [复制链接]

最近在搞STM8,,卡在硬件IIC一个多星期了,网上也搜不到相关的资料,库里有个双机通信的例程,看了一天也没看明白,下到单片机里运行也不对,直接在while (I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));  //等待总线空闲    这里就卡了,从机也没进过中断,
我的想法是,两块STM8S003通过IIC通信,串口给单片机A发送一个数据,单片机A通过硬件IIC把数据发送给单片机B,单片机B接收到数据后通过串口把数据发送给PC,同样,串口给单片机B发送一个数据,单片机B通过硬件IIC把数据发送给单片机A,单片机A接收到数据后通过串口把数据发送给PC,
急求高手帮忙,

此帖出自单片机论坛

最新回复

哥们  搞定了没  嘿嘿  详情 回复 发表于 2014-7-9 21:55
点赞 关注
 

回复
举报

2002

帖子

24

TA的资源

五彩晶圆(高级)

沙发
 
没弄过,帮顶。 话说你干嘛不一直串口过去,转来转去多麻烦
此帖出自单片机论坛

点评

额,我就是想学习下IIC协议啊亲,,IIC只读写过24C32,双机通信要用到中断,完全不知道怎么搞  详情 回复 发表于 2014-1-25 16:50
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
shower.xu 发表于 2014-1-25 16:47
没弄过,帮顶。 话说你干嘛不一直串口过去,转来转去多麻烦

额,我就是想学习下IIC协议啊亲,,IIC只读写过24C32,双机通信要用到中断,完全不知道怎么搞
此帖出自单片机论坛

点评

哦,我也没搞过,所以帮不上忙。 注意一下地址和主从设置。 另外,我不是你的亲....  详情 回复 发表于 2014-1-25 16:59
 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

4
 
石玉 发表于 2014-1-25 16:50
额,我就是想学习下IIC协议啊亲,,IIC只读写过24C32,双机通信要用到中断,完全不知道怎么搞

哦,我也没搞过,所以帮不上忙。
注意一下地址和主从设置。
另外,我不是你的亲....
此帖出自单片机论坛

点评

回贴的都是亲  详情 回复 发表于 2014-1-25 21:04
 
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

5
 
没有,帮顶
此帖出自单片机论坛
 
个人签名昵称:灰小子
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

6
 
shower.xu 发表于 2014-1-25 16:59
哦,我也没搞过,所以帮不上忙。
注意一下地址和主从设置。
另外,我不是你的亲....

回贴的都是亲
此帖出自单片机论坛
 
 
 

回复

6423

帖子

17

TA的资源

版主

7
 
这个可以找辛欣帮忙
此帖出自单片机论坛
 
个人签名training
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

8
 
帮顶,顺便问问解答了怎么给芯币呀?
此帖出自单片机论坛

点评

这个找管理员转可以么?  详情 回复 发表于 2014-1-25 22:50
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

9
 
wangfuchong 发表于 2014-1-25 21:45
帮顶,顺便问问解答了怎么给芯币呀?

这个找管理员转可以么?
此帖出自单片机论坛

点评

可以的,管理员都很热心  详情 回复 发表于 2014-1-26 22:39
 
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

10
 
这是我发送的程序:
void IIC_Init(void)
{
  I2C_FREQR = 0x0a;   //外设时钟频率10M
  I2C_CCRH = 0x03;    //
  I2C_CCRL = 0xe8;    //10KHZ
  I2C_TRISER = 0x04;  //上升时间
  I2C_CR2 |=0x04;    //收到一个字节后应答
  I2C_CR1 |=0x01;   //启用IIC模块
  
  I2C_OARH=0x40;
  I2C_OARL=0x03;
}

//主模式下的发送
void IIC_Host_TX(uchar add,uchar data)
{
  uchar temp;
  
  while(I2C_SR3 & 0x02);      //等待总线空闲
  UART_Send(2);
  I2C_CR2 |= 0x01;            //产生起始位
  while(!(I2C_SR1 & 0x01));   //等待起始位发送完成
  UART_Send(3);
  I2C_DR = add;               //写入器件地址
  while(!(I2C_SR1&0x02));     //等待器件地址发送结束
  UART_Send(4);
  temp = I2C_SR1;           
  temp = I2C_SR3;
  I2C_DR =data;               //发送数据
  while(!(I2C_SR1 & 0x84));   //等待数据字节发送完成
  UART_Send(5);
  I2C_CR2 |= 0x02;            //产生停止位   
}

这是我接收的程序:
void IIC_Init(void)
{
  I2C_ITR=0x06;
  I2C_FREQR = 0x0a;   //外设时钟频率10M
  I2C_CCRH = 0x03;    //
  I2C_CCRL = 0xe8;    //10KHZ
  I2C_TRISER = 0x04;  //上升时间
  I2C_CR2 |=0x04;    //收到一个字节后应答
  I2C_CR1 |=0x01;   //启用IIC模块
  
  I2C_OARH=0x40;
  I2C_OARL=0x02;
}

#pragma vector=0x15
__interrupt void I2C_IRQHandler(void)
{

  UART_Send(1);
  if(I2C_SR1&0x02)    //地址匹配
  {
    UART_Send(2);
    temp = I2C_SR1;           
    temp = I2C_SR3;
  }
  
  if(I2C_SR1&0x40)    //接收数据寄存器非空
  {
    UART_Send(3);
    IIC_Data=I2C_DR;
    UART_Send(IIC_Data);
  }
  
  if(I2C_SR1&0x10)    //检测到停止位
  {
    UART_Send(4);
    I2C_CR2|=0x02;    //释放总线
  }
}


发送在  while(!(I2C_SR1&0x02));     //等待器件地址发送结束  这里就卡了
接收只打印了1和4,
此帖出自单片机论坛
 
 
 

回复

1944

帖子

32

TA的资源

纯净的硅(高级)

11
 
I2C通讯你需要设置主从机模式的,A做主机发的时候B要设置为从机模式,反之亦然。
没有用过STM32的单片机
此帖出自单片机论坛
 
 
 

回复

2万

帖子

74

TA的资源

管理员

12
 
如果选择芯币悬赏模式的话,楼主可以直接发送。



现在的的话,只能等结贴时,请管理员帮忙了。
此帖出自单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

13
 
石玉 发表于 2014-1-25 22:50
这个找管理员转可以么?

可以的,管理员都很热心
此帖出自单片机论坛
 
个人签名昵称:灰小子
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

14
 
哥们  搞定了没  嘿嘿
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表