① 怎么用PIC单片机实现SPI双机通信
(1)SDI – 主设备数据输入,从设备数据输出;
(2)SDO – 主设备数据输出,从设备数据输入;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS – 从设备使能信号,由主设备控制。
直接把两个单片机连接到一起就可以了,然后按照datasheet要求写驱动程序也就是设置寄存器
② pic单片机如何模拟SPI方式
按照SPI接口要求的时序,让一个端口模拟时钟,一端口模拟SDO输出,一个模拟SDI输入,编程让相关的引脚按照SPI时序的要求高或低电平,或者读时判断高低输出相应的接收位就可以了,这样也是很方便的,但前提是你要对SPI通信的细节要了解的非常清楚。
③ pic单片机spi主从机通信问题
把里面所有的寄存器都设置一遍,无非是通信速率,还有时钟数据锁存方式(上升、下降沿)。另外,SPI的通信要点是发送一个字节,接收一个字节,即使想要接收一个字节,主机也要先发送一个字节。
④ PIC单片机模拟SPI的问题;我用PIC16F873模拟SPI。硬件仿真数据已经传输成功,但是在硬件里自己跑就有问题了
完全可以用IO口模拟SPI、IIC和异步串行通信。
你的程序中:
RC2=1; //CS
C3=0; //SCK要改为: RC2=1; //CS
NOP();
RC3=0; //SCK
这是因为PIC单片机对端口操作时是按“读-修改-写”的顺序,这个说来有点复杂,可参阅参考资料。
还有,要根据通信对象的最大SPI速率来确定每一位的延时时间,即每位间用几个NOP()语句。
⑤ pic的spi通信传输问题
利用spi模块的话,会直接写到寄存器里,就是8位了。
如果你自己编程实现SPI,可以移位存储。就是假设变量为BUF。
BUF=a;把最低位存进来。
BUF<<;(左移后移取决于a是在最高位还是最低位。你自己想一下。左移无所谓,如果是右移,那么一定要循环右移哦。)
然后下一个循环里
BUF= BUF+b;
BUF<<;
思路就是这么一个思路。
⑥ PIC单片机的SPI与I2C的通信问题
根据你电路板上选的芯片来选择,比如你选个AT24C02的EEPROM,这个芯片是基于I2C总线的,你在写程序的时候对I2C初始化就好了,同样你选个支持SPI总线的片子就对单片机的SPI功能设置。
⑦ 两个PIC的单片机能用SPI模块相互通信么
用主从模式通信是可以的。但是如果两个单片机都有可能向对方主动发数据,那么用UART 串口是最方便的了,需要的IO口也少,一般PIC都有集成UART模块。
SPI一般都用在mcu对周边器件的操作,如spi 接口的flash和spi 接口的eeprom 的数据读写操作。
⑧ pic单片机 spi 通信最多接几个从单片机,50个可以吗
按照你的命题,SPI通讯,拿一个PIC做主机,50个为从机,每个从机必须要花销一个IO口作为使能控制。
如果你选的单片机有53个IO口以上型号的,是可以挂50个SPI接口从机的,但这样做有意义吗?
带较多从机时建议 你用UART串行口或I2通讯,一般带SPI的PIC单片机也都带有这两个口
⑨ PIC单片机SPI问题
IO 口模拟SPI接口 :是可以的
数据就是按照SPI时序移位就可以
举个例子:(片选位必须有效)
SPI的CLK是上升沿有效
可以先将时钟设置为低电平,延时一段时间;
然后将数据移位置端口
再将时钟设置为高电平,延时一段时间
数据就可以输入或者输出了
⑩ pic单片机spi通信 读一个数据之前为什么要写一个字节的数据
这个是由于单片机是作为主控方,通过写一个哑数据(任何数均可),单片机将发出时钟脉冲,从动方就会按照时钟的时序把数据在其数据输出线上输出。