yjf333333 发表于 2024-1-13 09:55:05

v5综合历程中,只有RA8876电阻屏 检测了bsp_I2CBusBusy。其余i2c均没调用bsp_I2CBusBusy?请问在os中咋使用ibsp_i2c_gpio

请教硬汉:v5综合历程中,只有RA8876电阻屏 检测了bsp_I2CBusBusy。其余i2c均没调用bsp_I2CBusBusy?请问在os中咋使用ibsp_i2c_gpio?

yjf333333 发表于 2024-1-13 10:00:44

delay咋处理?

eric2013 发表于 2024-1-13 10:37:16

1、OS下使用,什么都不用动,定义修改为static __IO uint8_t g_i2c_busy = 0这个即可
2、你楼主位的理解有误,是所有触摸都有用busy检测

        /* 获得原始的ADC值,未滤波 */
        if (g_ChipID == IC_8875)
        {
                /* 触笔中断发生 */
                if (TOUCH_PenInt())
                {               
                        if (g_tTP.fReqReadTouch == 2)        /* 表示主程序正在执行 TOUCH_Scan(), 避免递归溢出 */
                        {
                                g_tTP.fReqReadTouch = 3;
                        }
                        else if (g_tTP.fReqReadTouch == 3)
                        {
                                return;
                        }
                       
                        /* 如果主程序正在访问RA8875,则丢弃本次触摸采集,避免影响显示 */
                        if (RA8875_IsBusy())
                        {
                                g_tTP.fReqReadTouch = 1;        /* 请求主程序空闲时读取一次触摸坐标 */
                                return;
                        }

                        usAdcX = RA8875_TouchReadX();
                        usAdcY = RA8875_TouchReadY();
                }
        }
        else if (g_ChipID == IC_8876)                /* RA8876电阻屏 */
        {
                /* 触笔中断发生 */
                if (TOUCH_PenInt())
                {
                        /* 如果主程序正在访问其他I2C外设,则丢弃本次触摸采集 */
                        if (bsp_I2CBusBusy())
                        {
                                return;
                        }
                       
                        /* 获得原始的ADC值,未滤波 */
                        usAdcX = STMPE811_ReadX();
                        usAdcY = STMPE811_ReadY();
                }
        }
        else
        {
                if (TOUCH_PenInt())
                {
                        /* 如果主程序正在访问其他SPI外设,则丢弃本次触摸采集 */
                        if (bsp_SpiBusBusy())
                        {
                                return;
                        }

                        usAdcX = TSC2046_ReadAdc(ADC_CH_X);
                        usAdcY = TSC2046_ReadAdc(ADC_CH_Y);
                }
        }
页: [1]
查看完整版本: v5综合历程中,只有RA8876电阻屏 检测了bsp_I2CBusBusy。其余i2c均没调用bsp_I2CBusBusy?请问在os中咋使用ibsp_i2c_gpio