SC16IS752调试

硬件平台:RK3128
Android版本:6.0

Kernel版本:3.10.92


I2C转UART芯片SC16IS752,支持I2C转接成双UART口,ttySC0和ttySC1,调试时发现,ttySC0可用,但ttySC1始终不可用,代码是kernel 3.16内核代码,后来找到原因,是因为在读写寄存器时有问题。


原代码:

regmap_raw_read(s->regmap, SC16IS7XX_RHR_REG, s->buf, rxlen);

regmap_raw_write(s->regmap, SC16IS7XX_THR_REG, s->buf, to_send);

修改:

regmap_raw_read(s->regmap, (SC16IS7XX_RHR_REG << SC16IS7XX_REG_SHIFT) | port->line, s->buf, rxlen);

regmap_raw_write(s->regmap, (SC16IS7XX_THR_REG << SC16IS7XX_REG_SHIFT) | port->line, s->buf, to_send);


port->line即是uart num,读写寄存器时必须指定端口。

说明linux 3.16内核中此处代码有问题,但是在linux 4.x的版本中已经修正。


参考资源链接:[SC16IS752/SC16IS762I2C/SPI到RS-232/RS-485换器芯片](https://wenku.youkuaiyun.com/doc/3q2gf40sg7?utm_source=wenku_answer2doc_content) SC16IS752SC16IS762是高性能且低功耗的UART桥接芯片,支持I2C-bus和SPI接口与RS-232、RS-485标准的换。这些芯片能够实现高达5Mbit/s的数据传输速率,适合需要快速、可靠通信的应用场景。要实现从I2C或SPI到RS-232或RS-485的通信换,您需要按照以下步骤操作: 第一步:初始化SC16IS752/SC16IS762芯片。根据您的应用需求配置芯片的寄存器,设置波特率、数据位、停止位和校验位等参数。您可以通过I2C或SPI总线向芯片写入相应的控制字来完成这一步骤。 第二步:将SC16IS752/SC16IS762芯片连接到微控制器。将微控制器的I2C或SPI总线接口连接到芯片的相应引脚,同时确保RS-232或RS-485接口已经连接到您希望通信的设备。 第三步:编写通信协议换代码。如果使用I2C或SPI进行数据发送,您需要编写代码来控制这些接口。如果使用RS-232或RS-485接口进行数据接收,您同样需要编写代码来处理这些接口。 第四步:实现自动流控制。确保您的应用中包含了硬件和软件流控制功能,以防止数据溢出和确保数据传输的连续性。 第五步:进行通信测试。在实际通信之前,使用示波器和串口调试助手等工具测试连接和数据传输,确保所有设置均正确无误。 为了深入理解和实施上述步骤,您应该参考《SC16IS752/SC16IS762I2C/SPI到RS-232/RS-485换器芯片》。该资料提供了芯片的详细信息,包括内部结构、寄存器设置、编程实例以及典型应用场景的介绍。这将帮助您更好地掌握如何在嵌入式系统中高效使用SC16IS752/SC16IS762芯片,实现I2C/SPI与RS-232/RS-485之间的通信换。 参考资源链接:[SC16IS752/SC16IS762I2C/SPI到RS-232/RS-485换器芯片](https://wenku.youkuaiyun.com/doc/3q2gf40sg7?utm_source=wenku_answer2doc_content)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值