汽车芯片应用 ---L9826

1 芯片简介

ST公司的L9826芯片,8通道低边驱动,SPI通信方式,带诊断功能,同时两个端口可以并行控制,驱动能力450ma。

1.1 硬件设计

1.1.1  封装:

SO20

图1.1.1

1.1.2 引脚定义:

引脚

名称

描述

1

Out6

输出端口6

2

Out1

输出端口1

3

NRes

复位口

4

NCS

SPI片选口

5

GND

6

GND

7

NON1

输出端口1的并行控制口

8

SDO

SPI控制线

9

Out8

输出端口8

10

Out3

输出端口3

11

Out5

输出端口5

12

Out2

输出端口2

13

SDI

SPI控制线

14

CLK

SPI控制线

15

GND

16

GND

17

NON2

输出端口2的并行控制口

18

Vcc

电源

19

Out7

输出端口7

20

Out4

输出端口4

2 软件设计

软件设计主要包括,器件的初始化,IO控制,诊断数据读取。

2.1 SPI通信

2.1.1 SPI时序分析:

Spi的通信速率可达到3Mhz,下降沿移位数据,上升沿锁存数据到输出寄存器。具体时序图如下

具体实现函数如下,详细代码参考附录中百度网盘下载地址。

/******************************************************************************

*                                  spi 读写函数

*

* 说明: spi 时序操作函数,第一个时钟的上升沿输出数据。

*

* 参数: cmd 通过 MOSI 写入的数据

*

* 返回: MISO 读出的数据

******************************************************************************/

INT8U L9826SpiRdWr (INT8U cmd)

{

INT8U  i;

INT8U tmp;

CPU_ENTER_CRITICAL()

L9826_CLK_L()

tmp = 0;

Delay(2);

L9826_SPI_EN()        //芯片要求在时钟的低电平才能操作芯片使能脚

for (i = 0;i < 8;i++)

{

L9826_CLK_H()     //时钟的上升沿 MOSI 移位数据

if (cmd & 0x80)

{

L9826_SDI_H()

}

else

{

L9826_SDI_L()

}

cmd <<= 1;

//        Delay(2);

tmp <<= 1;

if (GET_L9826_SDO())     //上升沿读数据

{

tmp++;

}

L9826_CLK_L()     //下降沿数据写入从机

//Delay(2);

}

CPU_EXIT_CRITICAL()

L9826_SPI_DIS()

return tmp;

}

注:1. 函数中的Delay()函数可根据实际情况调试选择合适的参数,其影响器件的spi通信速率。

2.由于SPI对时序要求不是很严格,CPU_EXIT_CRITICAL()和CPU_ENTER_CRITICAL()可以(临界代码保护)屏蔽。

2.1.2 SPI 操作说明:

Spi通过给器件发送相应的控制字节,控制对应的通道开关,同时获取器件返回的数据(诊断相关)。

如上图所示,8个通道对应一个字节,每一个bit对应一个通道。如发送0x01,则Q7输出有效低电平。同时收到各个通道的诊断数据,如下图:

对于上述这个数据格式,软件里使用了位域操作方式,使用该方式的局限性是不同的MCU大小端模式不同对于的定义不同,为提高程序的通用性建议使用宏操作。本文使用的是HCS12内核,codewarrior开发环境,数据类型如下:

typedef union

{

uchar bytes;

struct

{

uchar chn7    :1;

uchar chn5    :1;

uchar chn3    :1;

uchar chn1    :1;

uchar chn8    :1;

uchar chn6    :1;

uchar chn4    :1;

uchar chn2    :1;               //2 channel

} Bits;

} CTRL_BYTE_TYPE;

如果大小端和作者使用的开发平台一致可直接复用,如不同可修改如下:

typedef union

{

uchar bytes;

struct

{

uchar chn2    :1;

uchar chn4    :1;

uchar chn6    :1;

uchar chn8    :1;

uchar chn1    :1;

uchar chn7    :1;

uchar chn5    :1;

uchar chn7    :1;               //2 channel

} Bits;

} CTRL_BYTE_TYPE;

有了数据结构,我们操作起来就方便,如,通道1为LED控制,可如下定义操作宏:

#define  LED_CTRL    chnData.Bits.chn1      // chnData为通道控制数据

#define  LED_ON()     LED_CTRL = 1;       //开灯

#define  LED_OFF()    LED_CTRL = 0;       //关灯

有了上述这种接口我们操作相应的宏非常方便,只需要在软件中周期性的把chnData通过SPI发送给器件。

2.2 诊断

我们周期性的把chnData发送给器件,同时会收到一个字节的数据,此数据中包含诊断信息。这里我们只关注SPI命令操作的诊断,只能检测两种情况1:输出短路到电源,2:输出开路或输出短路到地。

从图中可看到,如果通道输出1,得到的相应通道诊断数据也是1,此为1故障状态,类似的,如果输出通道0,得到的相应通道诊断数据也是0,此为2故障状态。其他情况为正常。

假设我们得到的诊断数据为chnSta,则软件中可以如下处理:

CTRL_BYTE_TYPE  orTmp.bytes,andTmp.bytes;

//把控制数据和诊断数据进行位或,位与操作

orTmp.bytes  = chnSta.bytes | chnData.bytes;

andTmp.bytes = chnSta.bytes & chnData.bytes;

if (orTmp.Bits.chn1 == 0)

{

//输出开路或输出短路到地

}

else if (andTmp.Bits.chn1 == 1)

{

//输出短路到电源

}

else

{

//正常

}

2.3 软件简介

整个软件的构架L9826_spi.c, L9826_app.c其中L9826_spi.c为L9826器件spi通信的驱动,L9826app.c则在spi的基础上封装了L9826的相关操作。

2.3.1移植接口

#define L9826_NCS         XXX

#define L9826_CLK         XXX

#define L9826_SDI         XXX

#define L9826_SDO         XXX

#define L9826_RST         XXX

用户只需要在代码中定义其用于接口即可。

2.3.2 使用说明

在移植好相关接口后,需要在初始化中调用InitL9826()函数,然后周期性调用L9826Monitor(),具体的调用周期看项目的实时性要求,本人使用的调用周期为10ms。

用户只需要在L9826_app.h文件中定义形如

//8 路输出通道控制 -- 写 1 输出低电平,

#define XXX    chnData.Bits.chn1

#define XXX    chnData.Bits.chn2

#define XXX    chnData.Bits.chn3

#define XXX    chnData.Bits.chn4

#define XXX    chnData.Bits.chn5

#define XXX    chnData.Bits.chn6

#define XXX    chnData.Bits.chn7

#define XXX    chnData.Bits.chn8

欢迎关注微信号,获取更多资讯和代码下载地址:

汽车维修 L9826芯片应用相关推荐

  1. “芯片荒”危机致汽车销量持续下滑,加快推进智慧供应链深化应用迫在眉睫

    汽车从制造角度而言是一个装配产品,它由大量的零部件组装起来.不同整车技术.内部构造虽然不尽相同,但所需要的零部件大概在1~2万件:另外就销售而言,汽车年销售量超过千万辆.在年销售达到千万件以上的商品中 ...

  2. 2022-2028年中国SIP芯片行业市场前景预测及投资战略研究报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国SIP芯片行业市场行业相关概述.中国SI ...

  3. 人工智能3d建模算法_打破国外垄断,全国产3D芯片为机器人“点睛”

    ◎ 科技日报记者 崔爽 传统机器人只有"手",只能在固定好的点位上完成既定操作,而新一轮人工智能技术大大推动了机器和人的协作,这也对机器人的灵活性有了更高要求. 要想像人一样测量. ...

  4. GPU、AI芯片技术市场分析

    GPU.AI芯片技术市场分析 市场将高速增长,GPU曙光初现,预计到2024年,国内人工智能技术市场规模将达到172亿美元:全球占比将从2020年12.5%上升到15.6%,是全球市场增长的主要驱动力 ...

  5. 2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片

    2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片 英伟达核弹级GPU:800亿晶体管,20块承载全球互联网流量 2022年3 月 22 日,在英伟达 GTC2022 上,英伟达介绍了 Hoppe ...

  6. 2022年AI芯片场景

    2022年AI芯片场景 随着技术成熟化,AI芯片的应用场景除了在云端及大数据中心,也会随着算力逐渐向边缘端移动,部署于智能家居.智能制造.智慧金融等领 域:同时还将随着智能产品种类日渐丰富,部署于智能 ...

  7. 芯片初创公司一亿融资可以烧多久

    芯片初创公司一亿融资可以烧多久 一个亿融资可以烧多久? 这个问题我分别问了几个芯片公司的创始人. 有说2年的(某中等规模电路,成熟制程的MCU芯片公司):有说1年的(某AI算力芯片公司):有说半年的( ...

  8. 一站式智能芯片定制技术

    一站式智能芯片定制技术 从55nm到5nm先进工艺,拥有创纪录(> 200次流片)和年10万片FinFET晶圆授权量产的骄人业绩,并且成功率高达100%.15年以来,先进工艺产品交付纪录持续行业 ...

  9. 内存接口芯片,服务器平台,PCIe 芯片

    内存接口芯片,服务器平台,PCIe 芯片 澜起科技成立于2004年,是国际领先的数据处理及互连芯片设计公司,致力于为云计算和人工智能领域提供高性能,低功耗的芯片解决方案,目前公司拥有互连类芯片和津逮® ...

最新文章

  1. FPGA在人工智能时代的独特优势
  2. AngularJS directive入门例子
  3. s3-1 数据链路层概述
  4. Ubuntu 16.04通过Unity Tweak Tool实现点击图标最小化
  5. mysql的最佳索引攻略
  6. 真正的高手,都有增长思维!(深度好文)
  7. canvas 图片反色
  8. robotframework基础学习(8)
  9. 计算机网络DNS域名配置,如何设置计算机的IP地址和DNS域名服务器
  10. 把读书当做信仰的民族:犹太民族
  11. 通过修改环境变量修改当前进程使用的系统 Temp 文件夹的路径
  12. 计算机显示器模糊,电脑显示器模糊了怎么办?
  13. python二分查找时间复杂度_时间复杂度 二分查找
  14. 解读 2018:13 家开源框架谁能统一流计算?
  15. Android创建WebP图像
  16. 《Head First 设计模式》笔记
  17. vscode代码切换大小写的教程
  18. 学html需要有什么软件,网页设计需要学什么 用什么软件
  19. Mycat批量插入性能测试
  20. AMD显卡如何用Anaconda安装pytorch

热门文章

  1. output = input.matmul(weight.t()) RuntimeError: expected scalar type Long but found Float 错误解决
  2. 互联网时代,帮你打开视野的20个网站!(精华版)
  3. 蓝桥杯单片机第13届省赛客观题
  4. 开启Gamefi新时代,年末极具潜力链游平台Dontplaywithkitty.io
  5. IP地理位置定位系统之应用场景划分
  6. ubuntu上安装qq
  7. WORD文档转为EXCEL表格
  8. 转子接地保护原理_转子接地保护原理
  9. “一年之计在于春”---博客之开场篇
  10. 烽火服务器装linux报错,震撼来袭,烽火发布 FitOS6.0 云操作系统