SPI控制MS5614T

1.SPI控制MS5614T

注意:
1.SPI配置不需要将GPIO配置为输出模式,否则会导致重新上电引脚不工作.(有很微弱的波形,表示没有复用成功)
2. 需要注意配置enSckPhase
3. MS5614T的PD引脚需要接高电平芯片才有输出,参考电压需要设置为1.65V
4.MS5614T输出模拟电压方式:

	MS5614T_FS_H;		//FS高
	MS5614T_CS1_L;
	MS5614T_CS2_L;
	MS5614T_CS3_L;
	Ddl_Delay1us(2);
	MS5614T_FS_L;		//FS低
	SPI3_WR_Byte(1,512);
	Ddl_Delay1us(5);
	MS5614T_FS_H;		//FS高
	MS5614T_CS1_H;
	MS5614T_CS2_H;
	MS5614T_CS3_H;

SPI配置

    stc_spi_init_t stcSpiInit;
    /* configuration structure initialization */
    MEM_ZERO_STRUCT(stcSpiInit);

    /* Configuration peripheral clock */
    PWC_Fcg1PeriphClockCmd(SPI_UNIT_CLOCK, Enable);

    /* Configuration SPI pin */
    PORT_SetFunc(SPI_SCK_PORT, SPI_SCK_PIN, SPI_SCK_FUNC, Disable);
    PORT_SetFunc(SPI_MOSI_PORT, SPI_MOSI_PIN, SPI_MOSI_FUNC, Disable);

    /* Configuration SPI structure */
    stcSpiInit.enClkDiv            			= SpiClkDiv32;
    stcSpiInit.enFrameNumber       			= SpiFrameNumber1;					// 帧数设定
    stcSpiInit.enDataLength        			= SpiDataLengthBit16;
    stcSpiInit.enFirstBitPosition  			= SpiFirstBitPositionMSB;			// 数据高位在前
    stcSpiInit.enSckPolarity 			 	= SpiSckIdleLevelLow;				// SCK空闲时SCK为高电平
    stcSpiInit.enSckPhase 				 	= SpiSckOddSampleEvenChange;  		// SCK奇数边缘数据更改,偶数边缘数据样本
    stcSpiInit.enReadBufferObject  			= SpiReadSendBuffer;				// 读发送缓冲区
    stcSpiInit.enWorkMode 				 	= SpiWorkMode3Line;					// 3线模式
    stcSpiInit.enTransMode 				 	= SpiTransOnlySend;     			// 仅发送模式
    stcSpiInit.enCommAutoSuspendEn          = Disable;							// 启用/禁用通信自动挂起
    stcSpiInit.enModeFaultErrorDetectEn     = Disable;							// 启用/禁用模式故障错误检测
    stcSpiInit.enParitySelfDetectEn 		= Disable;							// 启用/禁用奇偶校验自检
    stcSpiInit.enParityEn 					= Disable;							// 启动/禁止奇偶校验			
    stcSpiInit.enMasterSlaveMode 			= SpiModeMaster; 					// Spi主/从模式
		
    stcSpiInit.stcDelayConfig.enSsSetupDelayOption 	 = SpiSsSetupDelayCustomValue;		// SS设置延迟SCK选项枚举
    stcSpiInit.stcDelayConfig.enSsSetupDelayTime	 = SpiSsSetupDelaySck1;			    // SS设置延迟时间(enSsSetupDelayOption为自定义时效的值)
    stcSpiInit.stcDelayConfig.enSsHoldDelayOption 	 = SpiSsHoldDelayCustomValue;		// SS保持延迟时间选项
    stcSpiInit.stcDelayConfig.enSsHoldDelayTime 	 = SpiSsHoldDelaySck1;			    // SS保持延迟时间(enSsHoldDelayOption为自定义时有效的值)
    stcSpiInit.stcDelayConfig.enSsIntervalTimeOption = SpiSsIntervalCustomValue;		// SS间隔时间选项
    stcSpiInit.stcDelayConfig.enSsIntervalTime 	     = SpiSsIntervalSck6PlusPck2;	    // SS间隔时间(enSsIntervalTimeOption为自定义时有效的值)
	SPI_ClearFlag(SPI_UNIT, SpiFlagSendBufferEmpty);
	SPI_ClearFlag(SPI_UNIT, SpiFlagParityError);
	SPI_ClearFlag(SPI_UNIT, SpiFlagModeFaultError);
	SPI_ClearFlag(SPI_UNIT, SpiFlagOverloadError);
    SPI_Init(SPI_UNIT, &stcSpiInit);
    
	MS5614T_CS1_H;
	MS5614T_CS2_H;
	MS5614T_CS3_H;
	
	SPI_Cmd(SPI_UNIT, Enable);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值