打印
[技术问答]

新唐的BSP库函数中I2C的写入操作是否有判断成功与否

[复制链接]
933|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yiyigirl2014|  楼主 | 2024-1-9 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现部分厂家的库函数是非阻塞的,比如PIC没有在函数结束后检测是否成功发送。不知道新唐的有没有做这个。

使用特权

评论回复
沙发
yiyigirl2014|  楼主 | 2024-1-9 14:09 | 只看该作者
M051的库函数特别简单,只要写入寄存器就没了
uint8_t I2C_GetData(I2C_T *i2c)
{
    return (i2c->I2CDAT);
}

/**
* [url=home.php?mod=space&uid=247401]@brief[/url]      Send a byte to I2C bus
*
* @param[in]  i2c          I2C port
* @param[in]  u8Data       The data to send to I2C bus
*
* [url=home.php?mod=space&uid=266161]@return[/url]     None
*
* [url=home.php?mod=space&uid=1543424]@Details[/url]    This function is used to write a byte to specified I2C port
*/
void I2C_SetData(I2C_T *i2c, uint8_t u8Data)
{
    i2c->I2CDAT = u8Data;
}

使用特权

评论回复
板凳
duo点| | 2024-1-9 16:37 | 只看该作者
在许多BSP(Board Support Package)库中,I2C的写入操作通常会有一个返回值来判断操作是否成功。

使用特权

评论回复
地板
yiyigirl2014|  楼主 | 2024-1-9 16:39 | 只看该作者
duo点 发表于 2024-1-9 16:37
在许多BSP(Board Support Package)库中,I2C的写入操作通常会有一个返回值来判断操作是否成功。 ...

那么就会有不成功的情况,我觉得这个方法不是很好,这样也会导致丢弃,可以在程序里判断是否发送成功,发送后就等待若干时间或者收到了成功的消息,即总线不忙了,再结束函数,这样比较好。

使用特权

评论回复
5
AloneKaven| | 2024-1-10 08:22 | 只看该作者
不检测有什么影响吗?

使用特权

评论回复
6
yiyigirl2014|  楼主 | 2024-1-11 20:27 | 只看该作者
AloneKaven 发表于 2024-1-10 08:22
不检测有什么影响吗?

可能导致之前的数据还没发送完成,新数据又来覆盖了。

使用特权

评论回复
7
埃娃| | 2024-1-29 11:07 | 只看该作者
有相关的标志位吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3536

帖子

10

粉丝