ercircle 发表于 2025-9-22 20:47:59

dhtxs_82 发表于 2025-9-22 19:48
老师:晚上好!按你的提示,我做了测试,并没有出现你所示的那样的图,还是老样子。我在想开总中断,先后 ...

可以先直接24M下载我这个hex文件试下







dhtxs_82 发表于 2025-9-23 17:15:56

ercircle 发表于 2025-9-22 20:47
可以先直接24M下载我这个hex文件试下

老师:下午好!非常感谢您在百忙之中,特别是夜深了还为我排忧解难!{:pijiu:}。我收到你的回复后,马上对你提供的HEX文件进行测试,发现真的比过去好了,似乎是同步了。为了进一步弄清楚到底是哪一些指令出了问题,再说夜深了,所以我当时没有进一步测试,也不再跟你说我测试了你的HEX情况,怕打扰到您。刚才我进行了深入的研究,发现是MOV        P_SW2,#80H        ;(扩展特殊功能寄存器可以改写)指令后面,要有一定的延时,再去操作扩展特殊功能寄存器,才可以得到您这样的时序效果。我在这条指令后面放了114条NOP指令,其它指令秩序同我前面提供的一致。尽管如此,我通过示波器小时基观察,发现中断提前发生还是存在,只是提前时间变短而已。如图所示,TSDN信号是中断响应后(中断响应本身已经有延时),再执行了判断跳转指令后才改变,也就是说TSDN信号,是在S2SPI产生发送中断后,延时了一定的时间才改变的,而S2Clk脉冲的后沿(上升沿),有时在TSDN改变前,有时在TSDN改变改变后(这是中断响应延时有长有短引起)。我在原程序的CPL        TSDN后面入了一条MOV        S2BUF,#5AH,同时去掉定时中断里的类似指令,结果S2SPI不能连续发送。这说明此时向S2SPI发送缓冲区写入数据,还是要被舍去。总之,这款芯片在这里是有缺陷的。在S2SPI中断程序里必须放一点延时,才能向发送缓冲区写入数据,否则要丢失!作为一个快40年的从单板机玩到单片机,各种型号的单片机也玩了不少,这种情况也是第一次遇到(扩展特殊功能寄存器开放后要延时一定的时间,才能操作扩展特殊功能寄存器,如果无延时情况下,操作扩展特殊功能寄存器不成功,还好说一些),所以我很佩服你,真诚的叫您一声老师!您对STC32玩到这么精髓了,真的不容易!

ercircle 发表于 2025-9-23 18:00:10

dhtxs_82 发表于 2025-9-23 17:15
老师:下午好!非常感谢您在百忙之中,特别是夜深了还为我排忧解难!。我收到你的回复后,马上对你提供的 ...

您过奖了,我不过是在官方例程上找不同罢了,为您的探索精神点赞。
上文反馈的这个中断里继续发送,丢失字节现象也可以复现,研究研究,有新发现了回复您。

页: 1 [2]
查看完整版本: 32G12K128串口设置成SPI