先说结论,用I2C配crosslink估计是不行的,如果你们搜到这篇文章,那就不要想了,抓紧换SPI。

有项目在树莓派平台上需要用I2C把lattice 的crosslink的配置文件发送出去,但是看手册的意思又比较变态,I2C直接发,中间应该是不能有停顿,即不能重启一个I2C消息。

用python尝试了几个方法,思路就是把文件读到一个数组里面,然后再分段把这个数组传输出去。

from periphery import I2Clow_bit_list=[]
try:with open("RAWtoCSI2.bit","rb") as fh:#ba = bytearray(fh.read())low_bit_list = [byte for byte in bytearray(fh.read(-1))]datalen=len(low_bit_list)
except IOError:print("error open file")low_bit_list.append(255)
#msgwrite=I2C.Message(low_bit_list,read=False)
msgs=[]index=0
bufflen=4096
while True:if(index+bufflen<datalen):sendlen=index+bufflenelse:sendlen=-1sendbuff=low_bit_list[index:sendlen]msgwrite=I2C.Message(sendbuff,read=False)msgs.append(msgwrite)print(sendbuff)if(sendlen==-1):breakindex=index+buffleni2c.transfer(devAddr,msgs)

均以失败告终,后来查了一下底层代码,有如下几个问题,如果有不同见解的可以讨论。

  1. I2C的内核驱动中有明确的数据长度不能超过8192的限制,超过了会报 argument invalid 错误。也就是说I2C.transfer函数的message长度不能超过8192
  2. I2C的内核驱动又说了,一个message不能超过8192,但是你可以一次性发多个message,最多不能超过42个message。

我尝试了一下思路2,如上的代码就是思路2的,读数据后

msgwrite=I2C.Message(sendbuff,read=false)

msgs.append(msgwrite),

最后所有数据读完了,再一次性

i2c.transfer(devAddr,msgs)

我测试下来是21个msg包,但是改报i2c_transfer: timed out 错。

到此我感觉这个思路应该是不行的,linux驱动里面可能就没打算让你一次性传这么多东西,于是改用SPI接口。还好这个芯片也可以用SPI配置。

如果有人搜到crosslink 配置,希望这篇文章能让你少走点弯路,不要用i2c,用spi会好一点。

树莓派I2C发送大数据的坑 lattice crosslink配置相关推荐

  1. Qt QTcpSocket 客户端设计(自动重连、多线程处理、发送大数据包、同步方式)

    1.头文件 #ifndef TCPTOOL_H #define TCPTOOL_H#include <QObject> #include <QTcpSocket> #inclu ...

  2. 【大数据技术】centos7下配置hive连接mysql,mysql-connector-java-8.0.26-1.el7.noarch.

    [大数据技术]centos7下配置hive连接mysql(配置mysql-connector-java.jar),mysql-connector-java-8.0.26-1.el7.noarch. r ...

  3. CDH大数据平台搭建之虚拟环境配置

    CDH大数据平台搭建之虚拟环境配置 前言 一.虚拟机网络配置 1.配置ip地址 2.验证配置是否成功 二.关闭防火墙 1.防火墙命令 2.禁用防火墙 三.虚拟机主机名配置 1.临时配置主机名 2.永久 ...

  4. mongoDB大数据查询坑

    有一个30亿量级数据的库,如何全量爬取并分析? 因为量级过大无法一次性爬取至本地再分析,考虑使用limit().skip()混合的方法,一次读取1万条数据进行分析存储,30亿数据分成30万份后再合并分 ...

  5. 大数据技术之 HBase安装配置

    大数据技术之 HBase安装 1.hbase依赖于hadoop以及zookeeper,所以 1.1 首先myhadoop.sh start 1.2 然后zk.sh start 接下来安装hbase 1 ...

  6. JAVA大数据(一)简介-Hadoop环境配置,伪分布式模式架构学习用

    文章目录 1.课前资料 2.课程整体介绍 3.大数据介绍 什么是大数据? 为什么要学习大数据? 大数据相关技术 海量数据存储 海量数据清洗 海量数据处理 4.集群环境准备 4.1准备虚拟机 4.2修改 ...

  7. (非常详细)大数据平台学习·环境安装配置(一)(RockyLinux9版)

    一.文章简介 着手搭建大数据平台时,配置虚拟机环境是成为新手的第一道门槛.虽然各种视频和网站上也有很多虚拟机安装配置教程,但由于对 Linux 环境不熟悉,同时加上网上不少教程都是五花八门的cento ...

  8. 【大数据离线开发】1、大数据准备环境之Linux配置

    大数据准备环境 1.1 Linux实验环境 1.1.1 准备Linux操作系统 Linux操作系统:RedHat 7.4 64位 自带netcat服务器(测试:Spark Streaming) VMw ...

  9. 【kafka】控制台默认不能发送大数据 4096 4095 4129

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 文章目录 1.概述 2.场景再现2 2.1 概述 M.参考 1.概述 因为某些原因,需要做一个测试,然后 ...

最新文章

  1. 如何为MNIST手写数字分类开发CNN
  2. python检查URL是否能正常访问
  3. LeNet试验(二)权重参数随训练的变化
  4. [蓝桥杯][2014年第五届真题]分糖果-模拟
  5. P6810 「MCOI-02」Convex Hull 凸包
  6. 在linux内核3.14.43添加自己的驱动源码,linux内核如何加入自己的驱动
  7. 精读《手写 SQL 编译器 - 回溯》
  8. java输入行数打印菱形_JAVA题,输入行数,输入列数,输出一个菱形
  9. mysql standalone模式_Boss7 Standalone模式开发配置
  10. 图片格式之YUV420 转RGB格式(含代码)
  11. DataList的使用,Repeater
  12. 搜索算法-广度优先和深度优先搜索
  13. 微信帝国进化史:一个通讯工具如何在八年内制霸互联网?
  14. double key map 的实现
  15. 动态规划-最长不下降子序列
  16. el-checkbox-group 的坑
  17. 程序员的思维修炼--读书感悟
  18. “电脑族”保健 六项注意
  19. 方舟手游服务器设置文件翻译,方舟生存进化手游界面中文翻译 语言不通不发愁...
  20. 【读书笔记】分布式下服务可靠性保障

热门文章

  1. Android App的工作原理
  2. html中<button>按钮标签详细介绍
  3. 高房价绑架了中国经济...
  4. Java程序命令行参数总结
  5. java获取短信验证码_Java如何获取短信验证码
  6. win7下虚拟机VMWare装linux(ubantu)后挂载win7共享目录
  7. 【直播预告】CIKM 2022 论文分享:多场景个性化推荐的场景自适应自监督模型
  8. 【Linux】查看已被占用端口号
  9. 思科实验-3.3.1.5-Packet Tracer - 配置 PVST+
  10. STM32学习笔记之Bootloader升级Ymodem协议简介