本帖最后由 zgjzgjkyo 于 2019-5-8 17:37 编辑

环境为 IAR for STM8。使用寄存器(因为考虑到使用速度和flash有限,只能用寄存器版了)(即使寄存器版本,日常应用程序都快10K了)
主从机使用 STM8L152K4
目前情况是,主机能正常发送地址,也有从机的响应,有时突然能发送数据过去。但从机那边却没有没有产生任何的中断(按理一但响应add地址会产生一个中断的啊),更不用说收到数据了。
首先关键设置是有的,也开了总中断(asm("rim"); )
奇怪在,地址对时有产生一相关的回复
但会突然的置0(按理说要读了SR1再读SR3时,ADDR才会置0,我曾经怀疑过是仿真时先读了寄存器产生了误操作,但我试过不仿真,也会一样突然置0的(用放led程序在里面,没有运行))
如果发送错误的地址,SR2是会有AF没响应置位的。(也就是上面的操作没错阿?)
这里也要说一下,明明是开启了接收广播响应,但下面输入00地址还是没响应,太奇怪了........
主机这边的怪异问题先不说,至少能正常的产生中断,而且发送地址正常得到响应......
但从机那边就要命多了,直接说就是没有任何的响应,按理说主机是收到ACK的,也就是从机那边对了地址,SR1的ADDR会置1并产生中断的阿......事实上没有。
我也试过直接用循环查询SR1、2、3状态寄存器了,除了SR3 检测到有总线外,其余全为0。这下我也真的不知怎么回事了........
这东西我搞了三天了,结果还是完全的一样。主机能正常产生中断,也算能发送地址有回复响应。但从机就完全绝了......
在这里真心求教各位了。
下面程序主从机共用,方便大家查看。(删除大量不相干的,我测试过是可以用的,就是从机没有反应,但主机能收到地址的响应回复.......(如果改成其它地址就没有回复了...证明地址那边是可以的吧?))
|