tailimo 发表于 2024-9-11 01:03:51

8H1k08三线spi无法通讯ci24R1

网上示例程序比较少,自己写的死活通不上,读一个寄存器显示在oled上,不是255就是0,试过在指令之间加一us延时也不行
麻烦各位大佬看一下什么问题,谢谢!
mcu27Mhz,ci24R1最快10Mhz
csn,sck是推挽输出,data是准双向口,开启了输入

主程序,只是读一个寄存器的值
初始化oled ,gpio
unsigned char b;
        ci24_csn=1;
        ci24_sck=0;
        ci24_data=1;
        while(1)
        {
                ci24_csn=0;
        b = my_ci24_spi_Rbit(0x07);
                ci24_csn=1;
.....oled显示b
}
子函数
void my_ci24_spi_W(unsigned char spi_data)
{
        unsigned char i;
        for(i=0;i<8;i++)
                {
                ci24_data=(spi_data&(0x80>>i));
                ci24_sck=1;
                ci24_sck=0;
                }
}

unsigned char my_ci24_spi_R(void)
{
        unsigned char i,spi_data=0x00;
试过在这里把ci24_data改成0或者1都不行
        for(i=0;i<8;i++)
                {       
                ci24_sck=1;
                if(ci24_data==1){spi_data|=(0x80>>i);}
                ci24_sck=0;
                }
        return spi_data;
}

unsigned char my_ci24_spi_Rbit(unsigned char control)
{
        unsigned char databit=0x00;
        my_ci24_spi_W(control);
        databit=my_ci24_spi_R();
        return databit;
}

小涵子爸爸 发表于 2024-9-11 08:01:14

有逻辑分析仪么,可以用那个看下,比较直观

haiyang201 发表于 2024-9-11 09:29:00

2.4G无线模块吗???

tailimo 发表于 2024-9-11 12:43:48

haiyang201 发表于 2024-9-11 09:29
2.4G无线模块吗???

tailimo 发表于 2024-9-11 12:44:56

小涵子爸爸 发表于 2024-9-11 08:01
有逻辑分析仪么,可以用那个看下,比较直观

主要就是没有,我现在都感觉芯片是假的

soma 发表于 2024-9-11 12:51:09

有例程吗?有可以根据情况修改,看下效果

tailimo 发表于 2024-9-11 13:19:02

soma 发表于 2024-9-11 12:51
有例程吗?有可以根据情况修改,看下效果

其他例子都是别的单片机的, 我按照他们的逻辑写spi底层也通讯不上{:cry:}

他们在读的时候设置了data线为输入线,
stc我是设置了准双向口开启了输入

我去试试直接切换io口模式试试

tailimo 发表于 2024-9-11 13:46:43

本帖最后由 tailimo 于 2024-9-11 14:28 编辑

解决了, 面包板有问题,电路是通的对的 ,但就是通讯不上(但是之前通讯nrf24l01正常), (可能是这个芯片电气性能比较弱一点点干扰都不行)    换了一个面包板就好了,
程序也动了,

                ci24_csn=0;
                my_ci24_spi_Wbit(0x20,0x0e);
                ci24_csn=1;

               
               
                ci24_csn=0;               
                b = my_ci24_spi_Rbit(0x00);
                ci24_csn=1;
完整指令前后需要改变csn状态 这样才行
然后   读 需要把data置1 解除控制               

页: [1]
查看完整版本: 8H1k08三线spi无法通讯ci24R1