水木社区手机版
首页
|版面-电路设计与调试(Circuit)|
新版wap站已上线
返回
1/1
|
转到
主题:Re: 一个MCU如何挂8个spi设备
3楼
|
dismoon
|
2021-11-04 23:16:01
|
展开
建议I2C
【 在 seubaikal 的大作中提到: 】
: 菊花链搞起来会不会有问题
: 如果,使用片选驱动8个,驱动能力可能不行
--
FROM 114.227.181.*
7楼
|
dismoon
|
2021-11-05 22:58:06
|
展开
低速通讯实在没必要SPI,除非你有任务强实时,需要SPI给IRQ信号
不然你一秒钟N个I2C轮询一遍没啥大区别。
楼主都能问到一个SPI上用CSN挂8个了,说实话我估计用嗓子喊一声的通讯也够
【 在 commander 的大作中提到: 】
: I2C倒是省端口,就是这个时序啊ack啊nack啊一堆乱七八糟的实在不讨人喜欢
:
--
FROM 114.227.181.*
8楼
|
dismoon
|
2021-11-05 23:04:48
|
展开
我上git经常抽风,不然我倒是可以分享一个把I2C当一个handler任务句柄挂载在任务列表里,时钟到了指针去I2C,不用你这种delay3us强制系统空闲的方法
【 在 tom6bj 的大作中提到: 】
: 我写了个简单的软i2c库, 效率低些, 不用折腾这么多了
:
https://github.com/tomzbj/zi2c
:
: ...................
--
FROM 114.227.181.*
10楼
|
dismoon
|
2021-11-06 22:40:29
|
展开
我没用RTOS啊,我是根据RTOS基本原理自己拿了个时钟做任务序列,我现在大程序还是一个while(1)大循环
我不过是极限压榨核心
【 在 tom6bj 的大作中提到: 】
: 上rtos了都好办,用os提供的delay替换delay_us就行了呗
: :
: - 来自「最水木 for iPhone 8」
--
FROM 180.116.55.*
12楼
|
dismoon
|
2021-11-06 23:33:10
|
展开
不用上代码,写个大概原理都能懂。就是机器启动的时候直接开辟固定SRAM区域给多个任务,startup里把堆拉高,然后时钟里挂一个指针变量,一旦任务有延时,就把指针给其他任务,然后延时到了指针跳回来。
不是中断跳转,是固定的,在一个函数固定的地方把资源让出来给其他函数,到了时间跳回来而已。
要中断跳转肯定要保护现场,不上RTOS我也没办法
主要是有一阵F1芯片经常没法让外部晶振起振,而我当时有个产品设计初衷是用24MHz的,结果只能用8M内部时钟,
后来一看很多外部原件特别是I2C经常要延时,索性就把延时给其他函数跑。
【 在 tom6bj 的大作中提到: 】
: 上具体代码看看?
: delay不用上下文切换又不破坏原有流程的话, 我还真没想到你的好办法
:
: ...................
--
FROM 180.116.55.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版