OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4456|回复: 10

求助如何用普通IO模拟通信

[复制链接]

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2016-10-13 17:13:06 | 显示全部楼层 |阅读模式
10金钱

QQ图片20161013171138.jpg

最佳答案

查看完整内容[请看2#楼]

问题 解决了,捕获 起始信号,定时采样,协议与技术支持沟通。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-13 17:13:07 | 显示全部楼层
问题 解决了,捕获 起始信号,定时采样,协议与技术支持沟通。
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-13 17:15:40 | 显示全部楼层
init和stop信号 都接在普通I0上,我想通过init引脚发送命令,stop引脚接收回复
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-13 17:17:22 | 显示全部楼层
如果发送的话 就是发一位 延时一下再发下一位,但是接收呢,用外部中断么,回复的信号看起来好像没有间隔昂,
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-13 17:19:31 | 显示全部楼层
Tip小于5us 是测量模式 给一个脉冲 stop引脚回两个脉冲,但是大于15us的通信 模式如何操作 呢,
回复

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2016-9-26
在线时间
23 小时
发表于 2016-10-13 17:20:34 | 显示全部楼层
用一个IO根据相应的时序图,按照高于时序表最小间隔时间,低于最大时间间隔,循环使用延时函数拉高、拉低电平,用作模拟时序图中一根时序。另一个IO在相应高/低电平期间按照时序表做出相应的电平跳变,即可完成模拟时序。

可能专业术语描述的不太好,但意思是准确的。
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-14 08:35:11 | 显示全部楼层
另一个IO是读取,您描述的好像还是按照时序模拟发送昂
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-10-14 19:14:28 | 显示全部楼层
你这是单总线传输数据么?
怎么区分0/1?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-17 08:57:32 | 显示全部楼层
#define PulseEn1()             LPC_GPIO2->FIOSET  = ((U32)1 << 0)
#define PulseDis1()         LPC_GPIO2->FIOCLR  = ((U32)1 << 0)
int main (void)
{       
        LED_Init();
        while(1)
        {       
                U8 command[]={0x06,0x00,0xB2,0x9E};
                SysTick_Config(SystemFrequency);
                LPC_GPIO2->FIODIR |= ((U32)1 << 0);
                PulseDis1();
                delay_us(100);
                PulseEn1();
                delay_us(15);
                PulseDis1();
                delay_us(100);
                SendBytes(command,4);
                PulseDis1();
                delay_us(2000);

                LED0_ON();       
        }



}

void SendOneByte(U8 Byte)
{     
        U8 i,tmp;       
        for(i=0;i<8;i++)
        {
                tmp        = (Byte >> i) & 0x01;  //

                if(tmp == 0)
                {
                        PulseDis1();
                        delay_us(4);        //0               
                }
                else
                {
                        PulseEn1();
                        delay_us(4);        //1               
                }       
        }         
}
void SendBytes(U8 *str,U8 len)       
{
  U16 i;
  for(i=0;i<len;i++)
  {
           SendOneByte(str[i]);
  }

}

回复的信号.jpg
通信截图.jpg
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2016-10-17 08:58:34 | 显示全部楼层
暂时测试 是这样的 还没有 进行 信号的读取,只是在示波器上看,黄色发送 蓝色回复
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2017-3-13 17:35:01 | 显示全部楼层
根据协议控制IO即可~。。高速信号还是不要模拟时序了~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-14 15:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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