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;
} 有逻辑分析仪么,可以用那个看下,比较直观 2.4G无线模块吗???
haiyang201 发表于 2024-9-11 09:29
2.4G无线模块吗???
对 小涵子爸爸 发表于 2024-9-11 08:01
有逻辑分析仪么,可以用那个看下,比较直观
主要就是没有,我现在都感觉芯片是假的 有例程吗?有可以根据情况修改,看下效果 soma 发表于 2024-9-11 12:51
有例程吗?有可以根据情况修改,看下效果
其他例子都是别的单片机的, 我按照他们的逻辑写spi底层也通讯不上{:cry:}
他们在读的时候设置了data线为输入线,
stc我是设置了准双向口开启了输入
我去试试直接切换io口模式试试 本帖最后由 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]