打印
[STM32F4]

求助:关于如何配置读写状态的程序

[复制链接]
1110|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang253098656|  楼主 | 2015-7-24 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是菜比,实在是不知道如何改了,这个代码可以输出波形,但是写不进去,底层应该是有问题的。貌似读写状态转换的底层程序 有问题
沙发
wang253098656|  楼主 | 2015-7-24 15:20 | 只看该作者
程序如下
RCC_AHB1PeriphClockCmd(0x1FF, ENABLE);                        //IO port I-A clock enabled
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Mode =         GPIO_Mode_OUT;                //OutPut        DEGI
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;                //设置为开漏输出(PS:推挽输出只是输出不能)
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd =         GPIO_PuPd_UP;                //PullUP
        GPIO_InitStructure.GPIO_Pin = 0x0010;                GPIO_Init(GPIOE, &GPIO_InitStructure);        //pin13,15
       


                main_DS28E10();

使用特权

评论回复
板凳
wang253098656|  楼主 | 2015-7-24 15:21 | 只看该作者
#define RD_GPG11  {GPIOE->MODER&=~(3<<(8*2));GPIOE->MODER|=0<<8*2;}
#define WR_GPG11 {GPIOE->MODER&=~(3<<(8*2));GPIOE->MODER|=1<<8*2;} //wyq
#define        WR1_GPG11                GPIO_SetBits(GPIOE , GPIO_Pin_4)
#define        WR0_GPG11                GPIO_ResetBits(GPIOE , GPIO_Pin_4)
#define        V_GPG11                        ((GPIOE->IDR & GPIO_Pin_4) >> GPIO_PinSource4)
这是底层的程序,写0写1还是对的,但是写不进去,也读不出来,严重怀疑WR_GPG11是由问题的求教

使用特权

评论回复
地板
wang253098656|  楼主 | 2015-7-24 15:22 | 只看该作者
uint8_t read_bit(void)
{
        WR_GPG11;
        WR0_GPG11;
        delay_ow(2);
        RD_GPG11;                                // ysn        presence = ioctl(fd,1,&get); // get presence signal   给出存在信号
//?        WR1_GPG11;
        delay_ow(15); // delay 15μs from start of timeslot    从开始的时隙中延迟15us//wyq
//return(RD_GPG11);
                return(V_GPG11);                                                         // presence signal returned   返回存在信号
}

使用特权

评论回复
5
wang253098656|  楼主 | 2015-7-24 15:24 | 只看该作者
void write_bit(char bitval)
{
        WR_GPG11;
        WR0_GPG11;
       
        delay_ow(2);
        if(bitval==1) WR1_GPG11;
        delay_ow(70);// hold value for remainder of timeslot   持有价值剩余的时隙
        WR1_GPG11;
        delay_ow(2);        // must add this delay because the cup frequence is 203MHZ.  必须添加这个延迟,因为杯频率为203 mhz。
                RD_GPG11 ;
}
读写大的流程应该是正确的,时序我也看过了,只有底层我一头雾水,只是普通的IO口操作,跪求大神帮忙看下

使用特权

评论回复
6
wang253098656|  楼主 | 2015-7-24 15:25 | 只看该作者
大神快来,求详细告诉我,读写状态怎么改变,怎么直接操作寄存器改变读写状态,我看了一些资料,但是稀里糊涂的啊

使用特权

评论回复
7
wang253098656|  楼主 | 2015-7-24 15:49 | 只看该作者
大神求回复啊

使用特权

评论回复
8
小浣熊| | 2015-7-24 15:51 | 只看该作者
我也很稀里糊涂的

使用特权

评论回复
9
松哥无敌| | 2015-7-25 09:13 | 只看该作者
额,我瞅瞅

使用特权

评论回复
10
搞IT的| | 2015-7-26 17:21 | 只看该作者
楼主问题解决了吗

使用特权

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

本版积分规则

7

主题

16

帖子

0

粉丝