"Thread:SysConfig"中讨论的其他器件
您好!
我将 ePWM 外设(3、4、6和4)设置为通用计数器周期、以实现50us。 计数器达到0后、对 EPWM3进行配置、从而触发 ADC 开始转换。 一旦转换完成、转换结束(EOC) 中断将被触发。 这样、每隔50 us 给我一次中断。 我的中断例程[INTERRUPT void ADCC1_ISR (void)]将清除 INT1标志并确认中断[PieCtrlRegs.PIEACK.ALL = PIEACK_GROUP1;]
这种方法效果很好、直到我添加了一些代码来执行与外部 EEPROM 的 I2C 通信。
使用 I2C A 时、 SDAA 连接在 GPIO 0上、SCLA 连接在 GPIO 1上。 这两个引脚均设置为具有输出、开漏、GPIO_ASYNC。
启动 I2C 通信时、在 SDA 设置为高电平时、 在50us 中断之前进入中断例程。 (这应该意味着 ADC 的转换已经结束。)
在参考手册中、GPIO 0和 GPIO 1与 EPWM1A 和 EPWM1B 共享多路复用。 我不使用 EPWM1。
我还已断开 EPWM1时钟、以确保其关闭。
-->使用相同的软件,将 GPIO32和 GPIO 33上的 I2C A 接线很好。 中断没有干扰!
GPIO 0和1上的 I2C A 是否遗漏了任何东西? 在勘误表中也找不到任何相关内容
下面是 PicoScope 示波器上的一些轨迹。
紫色表示中断在 I2C 传输(读取)数据之前50us 产生脉冲
红色是 I2C 时钟
蓝色是 I2C SDA
一旦 SDA 为高电平、将调用中断处理程序(发生中断)
更大的视图