intan-可以买得到的侵入式脑机接口芯片(SPI.DDR模式)

我羡慕很多公司,但最羡慕的不是那种巨无霸的公司,而是小而美,在一个高端领域“唯我独尊”的公司,今天说的公司就是:

图片

在侵入式脑机芯片领域可以唯一买到的芯片

不要说什么马克斯的东西牛逼,他的脑机芯片有几个买到的,有几个用到的?

我的意思是,说的再厉害,更多的人用不到,当然你说什么都是你对,对对对,你说的对。

图片

这个就是鄙人的榜样了,创始人

图片

当然了,芯片都流片了,就买货就行,当然可以不去再开发

图片

服务了六大洲五十个国家

图片

国内也有很多的科研机构在用

我接触也是因为中科院的一位朋友在使用它,然后我也上车了,感觉在里面可以学到的东西有很多。

图片

其实它主要就是两个大类,采集和刺激,然后围绕着这个给出了系统的方案。

图片

采集

图片下面应该是数字组件,我也不是很懂芯片

图片

刺激

  1. 具有双极(差分)输入的RHD2216 16 通道放大器芯片
  2. 具有单极输入和公共参考的RHD2132 32 通道放大器芯片
  3. 具有单极输入和公共参考的RHD2164 64 通道放大器芯片

图片

封装很小

图片

采集uV级别的心电信号

图片

使用胸部的 Ag/AgCl 电极。放大器配置为下截止频率为 0.6 Hz,上截止频率为 100 Hz。ADC 采样率为每通道 2 kS/s。

图片

个时间对齐的皮质动作电位,1s内对齐

先看一个芯片的数据:

  • ADC 放大器采样率高达每通道 30 kSamples/s
  • 低本底噪声:2.4 μV rms(典型值)
  • 上限截止频率可配置为 100 Hz 至 20 kHz
  • 下限截止频率可配置为 0.1 Hz 至 500 Hz
  • 集成多频率原位电极阻抗测量能力
  • 辅助 ADC 输入,用于连接其他片外传感器

图片

首先是一个俩级放大的OP结构,第一级的放大倍数很大。可以看到是交流耦合,前级电容,后面通过一个MUX转换,非同步采集,我以为是同步捏,滤镜没有了。。。

然后还有一个温度传感器,可以看到还有一个1.25的参考,所以这个东西的范围应该就是0~3.3V,然后接的是一个16bit的ADC,去掉一个误差位,那就是15bit,后级就是一个数字模块了,SPI闪亮登场。

图片

前级有ESD的保护级

图片

阻抗测试

RHD2000芯片集成了一个用于生成用户指定交流电流波形的电路。这个电路可以向任意选择的电极注入特定的交流电流波形,主要用于阻抗测试等目的。

  1. 数字-模拟转换 (DAC): 芯片内部有一个8位DAC,通过SPI接口可以设置其输出电压。

  2. 低通滤波器: DAC输出的数字阶梯波形经过一个二阶10kHz低通滤波器,滤除高频噪声,得到相对平滑的模拟信号。

  3. 电流转换: 滤波后的模拟信号通过一个可选择的电容(0.1pF, 1pF, 10pF)连接到测试电极。这个电容将电压转换为电流,从而在电极上产生交流电流。

  4. 波形控制: 通过SPI接口可以设置DAC的输出电压,从而控制注入到电极的电流幅值和波形。

  • DAC输出电压范围: 0V至1.22V,步进为4.785mV。

  • 低通滤波器截止频率: 10kHz。

  • 可选择电容值: 0.1pF, 1pF, 10pF。

  • 波形控制: 可以产生近似正弦波、方波等波形。

  • 以上是参数细节

图片

16通道的也是一样的

图片

因为通道很多

  • LVDS模式的优势:

    • 高速传输:适合高速数据传输场景。

    • 抗干扰能力强:适用于噪声较大的环境。

    • 长距离传输:适用于长距离通信。

  • 选择模式的考虑因素:

    • 数据传输速率:高速率选择LVDS,低速率选择CMOS。

    • 抗干扰要求:对噪声敏感的场合选择LVDS。

    • 系统复杂度:LVDS实现相对复杂,CMOS更简单


因为精密信号对干扰非常敏感,这里当然不全是这个原因,主要是后端输出的信号有点大,就使用了LVDS了,这种差分信号又快干扰又小。当然为了兼顾开发,也有SPI。

  • LVDS_en:

    • 功能: 用于控制SPI接口的工作模式。

    • 高电平有效: 当LVDS_en为高电平时,SPI接口采用LVDS模式进行通信。LVDS是一种高速、低功耗的差分信号传输方式,具有抗干扰能力强等优点。

    • 低电平有效: 当LVDS_en为低电平时,SPI接口采用传统的CMOS电平信号进行通信。

  • CS+、CS-:

    • 功能: 芯片选择的输入信号,用于激活SPI器件。

    • LVDS模式: 当LVDS_en为高电平时,CS+和CS-构成一个LVDS差分对,共同作为芯片选择的输入。

    • CMOS模式: 当LVDS_en为低电平时,仅使用CS+作为标准的CMOS电平输入。

  • SCLK+、SCLK-:

    • 功能: SPI接口的串行时钟信号。

    • LVDS模式: 当LVDS_en为高电平时,SCLK+和SCLK-构成一个LVDS差分对,作为串行时钟输入。

    • CMOS模式: 当LVDS_en为低电平时,仅使用SCLK+作为标准的CMOS电平输入。

  • MOSI+、MOSI-:

    • 功能: 主机向从机发送数据的串行数据输入。

    • LVDS模式: 当LVDS_en为高电平时,MOSI+和MOSI-构成一个LVDS差分对,作为串行数据输入。

    • CMOS模式: 当LVDS_en为低电平时,仅使用MOSI+作为标准的CMOS电平输入。

  • MISO+、MISO-:

    • 功能: 从机向主机发送数据的串行数据输出。

    • LVDS模式: 当LVDS_en为高电平时,MISO+和MISO-构成一个LVDS差分对,作为串行数据输出。

    • CMOS模式: 当LVDS_en为低电平时,仅使用MISO+作为标准的CMOS电平输出。


通过控制LVDS_en引脚,可以根据不同的应用场景选择LVDS模式或CMOS模式。

LVDS模式具有更高的传输速率和抗干扰能力,适用于高速数据传输;而CMOS模式则更简单易用。


  • CPOL=0: 表示时钟的空闲状态为低电平。

  • RHD2000 chip always acts as slave: 表示该芯片在SPI通信中始终作为从机。

  • LVDS差分信号: LVDS信号通过一对差分信号线传输,通过比较两条线的电压差来恢复数据,从而提高抗噪声能力。

图片

俩种传输

  • 电压波形:

    • 标准CMOS: 输出电压在高低电平之间切换,幅度接近电源电压。

    • LVDS: 输出电压是差分信号,即MISO+和MISO-之间存在一个固定差值(350mV)。每个信号的绝对值较低,通常在电源电压的1/2左右。

  • 电流波形:

    • 标准CMOS: 输出电流在高低电平切换时会有较大的变化,导致较高的功耗。

    • LVDS: 由于采用差分信号,输出电流相对较小且稳定,功耗较低。


这里需要注意一点是,这个SPI不是我们平常使用的SPI,而是DDR,叫双倍率模式,在一个时钟沿采样两次,比如CLK-10Mhz,现在就是20Mhz了。其实这种做法在flash,内存里面很常见。

  • 在标准SPI中,MISO数据只在SCLK的上升沿或下降沿被采样一次。

  • DDR SPI为了提高数据传输速率,在SCLK的一个周期内,MISO数据会在上升沿和下降沿各被采样一次。

图片

连接示意图,但是MCU来连接不太好,就是不灵活

图片

我前几个看64的还没有MCU版本,现在全系列芯片都可以使用MCU控制了。

图片

OK,一会儿看

图片

对于一个标准的协议来说,就是CLK一个Edge才采样一次

图片

DDR就是上下都会采样

下面这段内容,全网都没有,你能看到就有福气了。

在使用单片机(如STM32 U5或H7)实现DDR(Double Data Rate,双倍数据速率)SPI通信时,由于标准SPI外设不支持32位MISO接收,而需要采用两个SPI外设来实现这一功能的配置方法。

  • 问题: 标准SPI外设通常不支持MOSI传输16位数据,MISO接收32位数据的模式。


  • 解决方案:

    • 两个SPI外设: 分别用一个SPI外设负责16位MOSI数据的发送(TRANSMIT_SPI),另一个SPI外设负责32位MISO数据的接收(RECEIVE_SPI)。

    • 伪SCLK信号: 由于RECEIVE_SPI需要在SCLK的上升沿和下降沿都对MISO进行采样,因此需要生成一个频率是SCLK两倍的伪SCLK信号。

    • 时序同步: 伪SCLK的产生需要与真实的SCLK进行同步,确保MISO数据的采样时刻正确。


图片

SPI1

图片

SPI3

  1. 配置TRANSMIT_SPI:

    • 作为主设备,负责输出CS、SCLK和MOSI信号。

    • 只发送16位数据。

  2. 配置RECEIVE_SPI:

    • 作为从设备,只负责接收MISO信号。

    • 接收32位数据。

    • 使用生成的伪SCLK信号作为时钟。

  3. 生成伪SCLK信号:

    • 利用定时器产生一个频率为SCLK两倍的信号。

    • 调整伪SCLK的相位,使其与真实的SCLK保持同步。


利用微控制器的定时器模块,通过PWM模式和重复计数器,生成一个频率为SCLK两倍的方波信号。通过调整定时器的参数,可以精确控制伪SCLK的相位,使其与SCLK保持同步。

图片

  • True SCLK: 标准的SPI时钟信号。

  • Pseudo-SCLK: 由定时器生成的伪时钟信号,频率是True SCLK的两倍。

  • MOSI: 主机发送的数据,以True SCLK为时钟。

  • MISO A, MISO B: 从机接收的数据,分别在Pseudo-SCLK的奇数和偶数上升沿采样。


图片

U5强哇

  • U5:

    • 定时器配置恰好满足时序要求,无需额外调整。

  • H7:

    • 运行速度更快,需要引入额外的延迟,以确保伪SCLK与True SCLK的相位关系正确。

图片

为了速度,DMA全开

图片

依靠中断进行通讯

图片

牛的,波特率这么高

剩下的细节就不写了。

图片

不过LL确实很快

图片

级联的就算了,FPGA来了

图片

LVDS的连接是这样的

图片

一种板子是这样的,上面的金点都镀金了

图片

双芯片,128位通道

图片

FPGA的框图,等我学会FPGA再看

图片

当然了一些厂家也设计了很多有趣的设计,我感觉我也可以设计。

总之很棒,但是脑机接口也路途遥远。