打印
[技术问答]

大家看看我的模拟I2C

[复制链接]
1408|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
perfectherry|  楼主 | 2016-3-9 14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void SimulateI2cInit(void)
{
        SYS->GPAMFP.I2C1_SCL_nRD=0;
        SYS->GPAMFP.I2C1_SDA_nWR=0;
        GPIOA->PMD.PMD11=1;
        GPIOA->PMD.PMD10=1;
        SCLK=1;
        DIN=1;
}
void SimulateI2cStart(void)
{
        DIN=1;
        SCLK=1;
        DrvSYS_Delay(1);
        DIN=0;
        DrvSYS_Delay(1);
        SCLK=0;
}

void SimulateI2cStop(void)
{
        SCLK=0;
        DIN=0;       
        DrvSYS_Delay(1);
        SCLK=1;
  DrvSYS_Delay(1);
        DIN=1;
        DrvSYS_Delay(1);
}


void SimulateI2cSendByte(uint8_t data)
{
     uint8_t i;
     for (i = 0; i < 8; i++)
     {
        if(data & 0x01)
                                {
                                        DIN=1;
                                }
        else
                                {
                                        DIN=0;
                                }
                                DrvSYS_Delay(1);
                                SCLK=1;
                                DrvSYS_Delay(1);
                                SCLK=0;
                                DrvSYS_Delay(1);
                                data=data>>1;
                        }
}
void SimulateI2cWriteData(uint8_t addr,uint8_t data)
{       
        SimulateI2cStart();
        SimulateI2cSendByte(0X44);
        SimulateI2cStop();
       
        SimulateI2cStart();
        SimulateI2cSendByte(addr);
        SimulateI2cSendByte(data);
        SimulateI2cSendByte(addr);
        SimulateI2cSendByte(data);
        SimulateI2cStop();
               
        SimulateI2cStart();
        SimulateI2cSendByte(0x8F);
        SimulateI2cStop();
}
沙发
gejigeji521| | 2016-3-9 15:11 | 只看该作者
看完了,楼主的意思是这个模拟的无法运行,还是误码率高?

使用特权

评论回复
板凳
跟屁虫| | 2016-3-9 22:15 | 只看该作者
你这是要操作什么芯片啊,这个模拟得看和什么芯片的时序相对应吧

使用特权

评论回复
地板
perfectherry|  楼主 | 2016-3-10 09:53 | 只看该作者
gejigeji521 发表于 2016-3-9 15:11
看完了,楼主的意思是这个模拟的无法运行,还是误码率高?

无法运行,芯片是TM1640,

使用特权

评论回复
5
perfectherry|  楼主 | 2016-3-10 09:54 | 只看该作者
跟屁虫 发表于 2016-3-9 22:15
你这是要操作什么芯片啊,这个模拟得看和什么芯片的时序相对应吧

主要是它这个时序给的也忒烂了点。问了他们技术,说不是I2C,叫做伪I2C,没有应答和器件地址

使用特权

评论回复
6
侣行天下| | 2016-3-10 14:57 | 只看该作者
这种模拟的速度能达到400K吗

使用特权

评论回复
7
侣行天下| | 2016-3-10 21:51 | 只看该作者
slave的地址是在什么地方设定的?

使用特权

评论回复
8
Micachl| | 2016-3-12 21:34 | 只看该作者
为啥用模拟的,硬件的不好吗,速度还快

使用特权

评论回复
9
perfectherry|  楼主 | 2016-3-15 11:49 | 只看该作者
Micachl 发表于 2016-3-12 21:34
为啥用模拟的,硬件的不好吗,速度还快

这款芯片不支持硬件I2C。。。

使用特权

评论回复
10
Thethree| | 2016-3-15 14:52 | 只看该作者
我用stm32做过模拟的I2C,但是我想知道你写的这个是通用的吗

使用特权

评论回复
11
ideafor| | 2016-3-15 20:27 | 只看该作者
通用性好不好,能移植到其他的单片机上吗

使用特权

评论回复
12
perfectherry|  楼主 | 2016-3-16 08:49 | 只看该作者
Thethree 发表于 2016-3-15 14:52
我用stm32做过模拟的I2C,但是我想知道你写的这个是通用的吗

这个不是标准的I2C,仅针对这一款芯片。

使用特权

评论回复
13
zhuotuzi| | 2016-3-16 09:39 | 只看该作者
用示波器看看演示对不对,是否满足协议的要求。

使用特权

评论回复
14
Beckham_Owen| | 2016-3-21 20:11 | 只看该作者
现在硬件的速度那么快,为啥还要用模拟的啊

使用特权

评论回复
15
598330983| | 2016-3-22 11:23 | 只看该作者
你看一下,这个端口的模式配置正确没有,配置正确了,才能用。

使用特权

评论回复
16
a_ziliu| | 2016-3-22 13:37 | 只看该作者
把TM1640規格書的波型丟出來吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

23

帖子

1

粉丝