完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
|
相关推荐
2个回答
|
|
|
[list]
[*]背景:ADS131A04作为SPI主设备,STM32L471作为SPI从设备,MCU通过SPI+DMA方式获取数据。 硬件连接: [img]https://file1.elecfans.com/web2/M00/FF/A0/wKgZomapt-WAagD-AAA_evVnk9w786.jpg[/img] MCU的SPI和DMA配置: void InitSPI(void){ /* --- INSERT YOUR CODE HERE --- */ hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_SLAVE; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_16BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; hspi1.Init.NSS = SPI_NSS_HARD_INPUT; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 7; hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; hspi1.State = HAL_SPI_STATE_RESET; if (HAL_SPI_Init(&hspi1) != HAL_OK) { Error_Handler(); }}void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle){ GPIO_InitTypeDef GPIO_InitStruct = {0}; if(spiHandle->Instance==SPI1) { /* USER CODE BEGIN SPI1_MspInit 0 */ /* USER CODE END SPI1_MspInit 0 */ /* SPI1 clock enable */ __HAL_RCC_SPI1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**SPI1 GPIO Configuration PA4 ------> SPI1_NSS PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ GPIO_InitStruct.Pin = ADS131A04_SPI1_NSS_Pin|ADS131A04_SPI1_CLK_Pin|ADS131A04_SPI1_MISO_Pin|ADS131A04_SPI1_MOSI_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* SPI1 DMA Init */ /* SPI1_TX Init */ hdma_spi1_tx.Instance = DMA2_Channel4; hdma_spi1_tx.Init.Request = DMA_REQUEST_4; hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_spi1_tx.Init.Mode = DMA_NORMAL; hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx); /* SPI1_RX Init */ hdma_spi1_rx.Instance = DMA2_Channel3; hdma_spi1_rx.Init.Request = DMA_REQUEST_4; hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE; hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_spi1_rx.Init.Mode = DMA_NORMAL; hdma_spi1_rx.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx); /* SPI1 interrupt Init */ //HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0); //HAL_NVIC_EnableIRQ(SPI1_IRQn); /* USER CODE BEGIN SPI1_MspInit 1 */ /* USER CODE END SPI1_MspInit 1 */ }}问题:ADC上电后,DOUT管脚一开始正常输出0xFF04,但是MCU初始化使能SPI后DOUT信号线电平被拉低,DOUT信号线上拉电阻试过100k,10k以及去掉上拉电阻,依然都是被拉低,可能是什么原因? [font=inherit][img]https://file1.elecfans.com/web2/M00/FF/A0/wKgZomapt-eABvbNAAEJz9FbCeA735.jpg[/img][/font] [/list] |
|
|
|
|
|
在您提供的背景信息中,ADS131A04作为SPI主设备,STM32L471作为SPI从设备,通过SPI+DMA方式获取数据。DOUT信号线电平被拉低可能有以下几个原因:
1. 硬件连接问题:请检查ADS131A04和STM32L471之间的硬件连接是否正确,包括SPI接口的MISO、MOSI、SCK、CS等信号线是否正确连接。如果连接错误或接触不良,可能导致DOUT信号线电平异常。 2. SPI配置问题:请检查STM32L471的SPI配置是否正确。根据您的代码,您已经设置了SPI_MODE_SLAVE、SPI_DIRECTION_2LINES和SPI_DATASIZE_16BIT。请确保这些配置与ADS131A04的SPI配置相匹配。如果配置不匹配,可能导致DOUT信号线电平异常。 3. DMA配置问题:请检查STM32L471的DMA配置是否正确。确保DMA通道、优先级、数据宽度等参数设置正确,以便正确地从SPI接口读取数据。 4. ADS131A04配置问题:请检查ADS131A04的配置是否正确。确保其SPI接口配置与STM32L471相匹配,并且其输出数据格式、速率等参数设置正确。 5. 电源问题:请检查ADS131A04和STM32L471的电源供应是否稳定。不稳定的电源可能导致DOUT信号线电平异常。 6. 干扰问题:请检查系统中是否存在电磁干扰,这可能影响DOUT信号线的电平。如果存在干扰,可以尝试使用屏蔽线或增加滤波器来减少干扰。 综上所述,DOUT信号线电平被拉低的原因可能有很多。建议您逐一排查上述可能的原因,以找到问题的根本所在。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
590 浏览 0 评论
1645 浏览 0 评论
2084 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1537 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1376 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1788浏览 29评论
2816浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1746浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1658浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1676浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 17:22 , Processed in 0.775669 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
443