硬汉嵌入式论坛

 找回密码
 立即注册
查看: 305|回复: 2
收起左侧

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

[复制链接]

15

主题

4

回帖

49

积分

初级会员

积分
49
发表于 2024-1-13 09:55:05 | 显示全部楼层 |阅读模式
请教硬汉:v5综合历程中,只有RA8876电阻屏 检测了bsp_I2CBusBusy。其余i2c均没调用bsp_I2CBusBusy?请问在os中咋使用ibsp_i2c_gpio?
回复

使用道具 举报

15

主题

4

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-1-13 10:00:44 | 显示全部楼层
delay咋处理?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2024-1-13 10:37:16 | 显示全部楼层
1、OS下使用,什么都不用动,定义修改为static __IO uint8_t g_i2c_busy = 0这个即可
2、你楼主位的理解有误,是所有触摸都有用busy检测

[C] 纯文本查看 复制代码
	/* 获得原始的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);
		}
	}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 23:58 , Processed in 0.168947 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表