SPI芯片抗干扰输出方法技术

技术编号:11005463 阅读:177 留言:0更新日期:2015-02-05 11:55
本发明专利技术公开了SPI芯片抗干扰输出方法,SPI芯片抗干扰输出方法,包括以下步骤:步骤一:在设计硬件时,通过SPI芯片最后一个菊花链输出接口连接到CPU的输入接口,保证SPI芯片输出的数据可以再次回读到CPU;步骤二:在软件设计时,通过SPI芯片最后一个菊花链的Dout引脚回读输出的数据,把相同的数据输进同一个SPI芯片的菊花链网络,在最后一个SPI芯片的输出Dout引脚可以得到前一次的输进的数据;每次把得到的数据进行比较,数据相等则表示当前数据正确,可以输出。

【技术实现步骤摘要】
SPI芯片抗干扰输出方法
本专利技术涉及工业自动控制领域,特别是SPI芯片抗干扰输出方法。
技术介绍
SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议;SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时),也是所有基于SPI的设备共有的,它们是Din (数据输入)、Dout (数据输出)、CLK (时钟)、CS (片选);不管那种SPI数据通信方式,由于采用的是串行通讯,从SPI芯片一般没有CPU功能,仅仅有数据接收功耗,而SPI串行数据在传输过程中,由于时间跨度很长,导致数据容易受到干扰,任何一个小的干扰错误会引起SPI类型的输出芯片的输出不确定性,可能会导致灾难性结果,甚至人身安全都受到很到的威胁。 目前,常规的现场总线型的控制器的模拟量输出AO和数字量输出DO都是采用SPI类型的芯片作为输出,在介质上传输的都是数字信号,由于干扰噪音的原因,使得“I”变成了 “0”,“0”变成了 “1”,从而影响到SPI芯片的性能,甚至于SPI芯片不能正常工作。由于我公司的控制器的安装环境复杂,多在火力发电厂、冶炼冶金行业,现场不确定因素多,容易受到干扰,不管从理论分析,还是从经验获得,SPI芯片的抗干扰能力没有校验功能,研究并解决SPI芯片的抗干扰问题非常重要。
技术实现思路
本专利技术的目的是提供一种SPI芯片抗干扰输出方法。 本专利技术是通过以下技术方案予以实现的:SPI芯片抗干扰输出方法,包括以下步骤:步骤一:在设计硬件时,通过SPI芯片最后一个菊花链输出接口连接到CPU的输入接口,保证SPI芯片输出的数据可以再次回读到CPU ;步骤二 :在软件设计时,通过SPI芯片最后一个菊花链的Dout引脚回读输出的数据,把相同的数据输进同一个SPI芯片的菊花链网络,在最后一个SPI芯片的输出Dout引脚可以得到前一次的输进的数据;每次把得到的数据进行比较,数据相等则表示当前数据正确,可以输出;软件的具体步骤如下:步骤①:CPU上电后第一次输出到SPI芯片的移位寄存器数据时保存在m_DATA_0UT_CUR,通过SPI_D0UT引脚回读移位寄存器的数据m_DATA_0UT_BACK确认与m_DATA_0UT_CUR相等后,保存在变量中m_DATA_0UT_PRE,然后使能移位寄存器的内容输出到输出控制寄存器,完成一次正确输出;步骤②:第二次及其以后的输出,比较m_DATA_0UT_CUR是否与m_DATA_0UT_PRE相等,在这里有两种情况: A.相等:则SPI芯片的输出行为与前一次输出行为保持一致,所以不必要输出数据,减少CPU的负担的同时大大降低了干扰的可能性;B.不相等:通过SPI_DIN口输出数据m_DATA_OUT_CUR同时在SPI_DOUT回读的数据保存在 m_DATA_OUT_BACK,则 m_DATA_OUT_BACK 保存的应该是 m_DATA_OUT_PRE 相等的数据,比较m_DATA_OUT_CUR是否与m_DATA_OUT_PRE相等;不相等则表示受到干扰,这时可以再次输出数据进入SPI芯片直到m_DATA_OUT_CUR与m_DATA_OUT_BACK相等;步骤③:通过SPI芯片使能输出引脚输出移位寄存器的内容到输出控制寄存器,完成一次正确的输出。 【附图说明】 图I是本专利技术的硬件接口示意图;图2是本专利技术的软件设计流程图。 【具体实施方式】 下面结合附图对本专利技术的实施例做进一步描述:如图I所示,在设计硬件时,通过SPI芯片最后一个菊花链输出接口连接到CPU的输入接口,保证SPI芯片输出的数据可以再次回读到CPU ;如图2所示,SPI芯片通信的结构如下: struct spi_device {struct spi_master 氺master;//用白勺 master @丰勾u32 max_speed_hz ; //通讯时钟 u8 chip_select;//片选号,每个 master 支持多个 spi_device u8 mode;//设备支持的模式,如片选是高or低 #define SPI_CPHA 0x01/* clock phase */ #define SPI_CP0L 0x02/* clock polarity */ #define SPI_M0DE_0 (0 10)/* (original Microffire) */ #define SPI_M0DE_1 (0 | SPI_CPHA) #define SPI_M0DE_2 (SPI_CP0L|0) #define SPI_M0DE_3 (SPI_CP0L | SPI_CPHA) #define SPI_CS_HIGH 0x04/* chipselect active high */ #define SPI_LSB_FIRST 0x08/* per-word bits-on-wire */ #define SPI_3WIRE 0x10/* SI/SO signals shared */ #define SPI_L00P 0x20/* loopback mode */ #define SPI_N0_CS 0x40/*1 dev/bus, no chipselect */ #define SPI_READY 0x80/* slave pulls low to pause */u8 bits_per_word; //每个字长的比特数 int irq;//中断号void *controller_state; //控制器寄存器状态 void *controIIer_data; char modalias[SPI—NAME—SIZE] ; // 设备名称 }; struct spi—master { struct device dev;//设备模型使用sl6 bus—num; //master 编号 ul6 num—chipselect; //支持的片选的数量,从设备的片选号不能大于这个数量 ul6 dma—alignment; /氺 spi_device. mode flags understood by this controller driver 氺/ul6 mode—bits; //master支持的设备模式/氺 other constraints relevant to this driver 氺/ul6 flags;//一些额外的标志 #define SPI—MASTER—HALF—DUPLEX BIT(O)卜 can’t do full duplex */ #define SPI—MASTER—NO—RX BIT(I)/* can’t do buffer read */ #define SPI—MASTER—NO—TX BIT(2)/* can’t do buffer write */ Int (^setup) (本文档来自技高网...
SPI芯片抗干扰输出方法

【技术保护点】
SPI芯片抗干扰输出方法,包括以下步骤:步骤一:在设计硬件时,通过SPI芯片最后一个菊花链输出接口连接到CPU的输入接口,保证SPI芯片输出的数据可以再次回读到CPU;步骤二:在软件设计时,通过SPI芯片最后一个菊花链的Dout引脚回读输出的数据,把相同的数据输进同一个SPI芯片的菊花链网络,在最后一个SPI芯片的输出Dout引脚可以得到前一次的输进的数据;每次把得到的数据进行比较,数据相等则表示当前数据正确,可以输出;软件的具体步骤如下:步骤①:CPU上电后第一次输出到SPI芯片的移位寄存器数据时保存在m_DATA_OUT_CUR,通过SPI_DOUT引脚回读移位寄存器的数据m_DATA_OUT_BACK确认与m_DATA_OUT_CUR相等后,保存在变量中m_DATA_OUT_PRE,然后使能移位寄存器的内容输出到输出控制寄存器,完成一次正确输出;步骤②:第二次及其以后的输出,比较m_DATA_OUT_CUR是否与m_DATA_OUT_PRE相等,在这里有两种情况:A.相等:则SPI芯片的输出行为与前一次输出行为保持一致,所以不必要输出数据,减少CPU的负担的同时大大降低了干扰的可能性;B.不相等:通过SPI_DIN口输出数据m_DATA_OUT_CUR同时在SPI_DOUT回读的数据保存在m_DATA_OUT_BACK,则 m_DATA_OUT_BACK 保存的应该是m_DATA_OUT_PRE相等的数据,比较m_DATA_OUT_CUR是否与m_DATA_OUT_PRE相等;不相等则表示受到干扰,这时可以再次输出数据进入SPI芯片直到m_DATA_OUT_CUR与m_DATA_OUT_BACK相等;步骤③:通过SPI芯片使能输出引脚输出移位寄存器的内容到输出控制寄存器,完成一次正确的输出。...

【技术特征摘要】
1.SPI芯片抗干扰输出方法,包括以下步骤: 步骤一:在设计硬件时,通过SPI芯片最后一个菊花链输出接口连接到CPU的输入接口,保证SPI芯片输出的数据可以再次回读到CPU ; 步骤二:在软件设计时,通过SPI芯片最后一个菊花链的Dout引脚回读输出的数据,把相同的数据输进同一个SPI芯片的菊花链网络,在最后一个SPI芯片的输出Dout引脚可以得到前一次的输进的数据;每次把得到的数据进行比较,数据相等则表示当前数据正确,可以输出;软件的具体步骤如下: 步骤①:CPU上电后第一次输出到SPI芯片的移位寄存器数据时保存在m_DATA_0UT_CUR,通过SPI_D0UT引脚回读移位寄存器的数据m_DATA_OUT_BACK确认与m_DATA_OUT_CUR相等后,保存在变量中m_DATA_OUT_PRE,然后使能移位寄存器的内容输出到输出控制寄存器,完成一次正确输出;...

【专利技术属性】
技术研发人员:周晓峰胡炎良陆坚
申请(专利权)人:湖南先步信息股份有限公司
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1