欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1910|回復: 1
收起左側

用STM32F4的SPI+DMA讀取傳感器數據,寄存器地址需要每次都發送嗎

[復制鏈接]
ID:895436 發表于 2021-7-23 11:36 | 顯示全部樓層 |閱讀模式

用STM32F4的SPI+DMA讀取運動傳感器數據,在定時中斷里控制DMA讀取傳感器的加速度計,溫度,陀螺儀數據,寄存器地址需要每次都發送嗎,程序會卡在ICM42605_SendByte(reg|0x80);。 while(SPI_I2S_GetFlagStatus(ICM42605_SPI,SPI_I2S_FLAG_RXNE) == RESET),接收緩存區一直不為空,有遇到的大佬嗎。幫忙指點下! {
if((SPITimeout--)==0) return SPI_TIMEOUT_UserCallback(1);
}
void SPI_DMA_ENABLE(void)
{
DMA_Cmd(DMA2_Stream0,DISABLE);
DMA_SetCurrDataCounter(DMA2_Stream0,SendBuff_Size);
DMA_Cmd(DMA2_Stream0,ENABLE);
DMA_Cmd(DMA2_Stream5,DISABLE);
DMA_SetCurrDataCounter(DMA2_Stream5,SendBuff_Size);
DMA_Cmd(DMA2_Stream5,ENABLE);
}
void DMA_ICM_ReadData(u8 reg,u16 NumByteToRead)
{
ICM42605_CS_LOW();
SPI1->DR;
SPI1->SR;
ICM42605_SendByte(reg|0x80);
SPI_DMA_ENABLE();
}
void DMA_SPI1_RX_IRQHANDLER(void)
{
ICM42605_CS_HIGH();
while(DMA_GetITStatus(DMA2_Stream0,DMA_IT_TCIF0)==RESET);
DMA_ClearITPendingBit(DMA2_Stream5,DMA_IT_TCIF5);
DMA_Cmd(DMA2_Stream0,DISABLE);
// printf("0");
}
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)//檢查指定的TIM中斷發生與否:TIM 中斷源
{
//讀取數據
DMA_ICM_ReadData(ICM_TEMP_OUTH_REG,SendBuff_Size);
SysTick_Delay_ms(1);
//數據合并
DATA_Combine();
LED_R_REV;
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除TIMx的中斷待處理位:TIM 中斷源
}
}


回復

使用道具 舉報

ID:123289 發表于 2021-7-23 17:12 | 顯示全部樓層
需要看接收方的說明書,有無自動地址+1的功能。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表