找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

PIC18F4680单片机SPI和IIC可以分时复用吗?

查看数: 2879 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-15 15:00

正文摘要:

PIC18f4680  SPI和IIC同时使用,SPI 驱动字库芯片,IIC驱动OLED。SPI和IIC都是使用的RC3 和RC4引脚,可以进行分时复用吗?怎么实现? void main(void) {     unsigned char NixieNum =0 , ...

回复

ID:1083396 发表于 2023-6-16 11:58
yzwzfyz 发表于 2023-6-16 11:32
你可以相像一下:
在时间1,将它配制成SPI,这一点CPU会无条件服从。
在时间2,再将它配制成I2C,这一点C ...

对的理论上是这样的。
现在是IIC驱动的OLED显示没有问题,SPI控制的字库读不出。

SPI控制的字库,在片选选通之前,将通讯切换成SPI理论上应该可以。
我感觉是MSSP中的哪个寄存器没有配置对。或者是配置的顺序不对。
单独测试SPI和IIC都是没有问题的
ID:123289 发表于 2023-6-16 11:32
你可以相像一下:
在时间1,将它配制成SPI,这一点CPU会无条件服从。
在时间2,再将它配制成I2C,这一点CPU也无法抗拒啊。
所以你的想法是成立的!
不过,你要想好,通讯的对方是否可以配合,以及外部分硬件是否能够配合。
ID:1083396 发表于 2023-6-16 10:25
angmall 发表于 2023-6-15 19:25
对于PIC18F4680单片机来说,SPI和I2C(IIC)是两种...

"【解惑帖】I2C与SPI总线分时复用造成的冲突",这个帖子上说可以分时复用。我也认为是可以的只要在使用SPI时关闭IIC,在使用IIC时关闭SPI应该就能实现。我再研究研究。谢谢
ID:155507 发表于 2023-6-15 19:25
对于PIC18F4680单片机来说,SPI和I2C(IIC)是两种不同的串行通信协议,它们不能直接分时复用在同一个引脚上。

SPI(Serial Peripheral Interface)是一种同步的串行通信协议,需要使用SCK(时钟)、SDI(数据输入)、SDO(数据输出)和SS(片选)等引脚进行通信。SPI通信是基于主从设备的方式进行的,主设备控制通信时序和数据传输。

I2C(Inter-Integrated Circuit,也称为IIC)是一种双线制串行通信协议,需要使用SCL(时钟)和SDA(数据)等引脚进行通信。I2C通信是基于主从设备的方式进行的,主设备控制通信时序和数据传输。

由于SPI和I2C使用不同的通信方式和时序,它们不能直接在同一个引脚上进行分时复用。每个通信协议都需要专用的引脚来进行通信。

如果您需要同时使用SPI和I2C通信,您需要为每个通信协议分配不同的引脚,并根据需要进行引脚的连接和配置。

SPI 设备可以通过不声明其从机选择来忽略 SCK 和 SDI,但是 IIC 设备会被 SCL 和 SDA 线上的正常 SCK 和 SDI 信号弄糊涂。 即使粗略地看一下 IIC 规范也会发现这一点。

ID:1083396 发表于 2023-6-15 15:04
我应该在程序的什么地方进行分时复用?没有思路

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表