晓奇 发表于 2023-5-26 21:38:13

32G12K128芯片,ESPI会影响EUSB?

初始化spi后USB CDC就不工作了,在spi初始化以后加一句EUSB=1没事了,如果把spi的初始化放在USB初始化之前也没事,想问一句:运行ESPI=1或者IE2 |= 0x02会关闭EUSB吗?
事实上是关闭了,奇怪

zhp 发表于 2023-5-26 21:59:05

本帖最后由 zhp 于 2023-5-26 22:25 编辑

内部查过了,您描述的问题确实存在
STC32G12k128系列的EUSB位为只写寄存器,读取恒为0
所以不能使用读-修改-写指令修改IE2的非EUSB位,否则会将EUSB位清0



晓奇 发表于 2023-5-26 22:04:54

本帖最后由 晓奇 于 2023-5-26 22:20 编辑

代码在这里:
void SPI_Isr() interrupt 9
{
    SPIF = 1;                     // 清中断标志
    Spi_Busy = 0;                   // 完成标志
}

// 配置使用硬件SPI,没有使用P1.4(MISO),但也不能移作他用,只能空着
void spi_init()
{
    P_SW1 &= 0xF3;                  //SPI-->)P1.3/4/5
    SPCTL = 0xdc;                   //使能SPI主机模式
    SPSTAT = 0xc0;
    Spi_Busy = 0;
    ESPI = 1;                     //使能SPI中断 IE2 |= 0x02;
}
spi初始化调用放在usb cdc初始化完成以后调用,cdc就不工作了,表现为打不开串口,如果在cdc之前调用spi初始化,就一切正常

zhp 发表于 2023-5-26 22:27:12

晓奇 发表于 2023-5-26 22:04
代码在这里:
void SPI_Isr() interrupt 9
{

您的代码没问题
是我们芯片有上面描述的小遗憾
要么在后面在多设置一次EUSB = 1;
或者使用IE2 = 0xXX;的语句赋值

神农鼎 发表于 2023-5-26 22:29:12

晓奇兄,不读,只写,先绕过去,后续我们再改
STC8H8K64U无这个问题
STC32G12K128, 先只写,不读,不【读-修改-写】,绕过去


晓奇 发表于 2023-5-26 22:43:38

谢谢老师解惑!都不是问题,只是疑惑。如果早看到这注释也就没事了。

神农鼎 发表于 2023-5-26 22:50:05



有提醒,以后如改版还是要改为能读能写好


页: [1]
查看完整版本: 32G12K128芯片,ESPI会影响EUSB?