ST意法半导体
直播中

陈超

8年用户 1009经验值
私信 关注
[问答]

使用SPI时I2C接口不工作怎么解决?

你好。
我一直在从事一个项目,在该项目中,我选择的基于 I2C 的传感器可以自行工作。当我启用基于 SPI 的模块时,I2C 传感器似乎没有发送任何数据。
I2C 线甚至与其他引脚没有任何冲突。
我已经包含了测试期间使用的主要代码。
  • int main(void)
  • {
  •   /* USER CODE BEGIN 1 */
  •         int i2c, test;
  •         char out[70] = {""};
  •   /* USER CODE END 1 */
  •   /* MCU Configuration--------------------------------------------------------*/
  •   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  •   HAL_Init();
  •   /* USER CODE BEGIN Init */
  •   /* USER CODE END Init */
  •   /* Configure the system clock */
  •   SystemClock_Config();
  •   /* USER CODE BEGIN SysInit */
  •   /* USER CODE END SysInit */
  •   /* Initialize all configured peripherals */
  •   MX_GPIO_Init();
  •   MX_I2C1_Init();
  •   MX_LPUART1_UART_Init();
  •   MX_SPI1_Init();
  •   MX_ADC_Init();
  •   /* USER CODE BEGIN 2 */
  •   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
  •   sprintf(out, "This is an ADC Testrn");
  •   HAL_UART_Transmit(&hlpuart1, (uint8_t*)out, sizeof(out), 200);
  •   HAL_Delay(2000);
  •   SPIMod_Reset();
  •   /* USER CODE END 2 */
  •   /* Infinite loop */
  •   /* USER CODE BEGIN WHILE */
  •   while (1)
  •   {
  •     /* USER CODE END WHILE */
  •             sprintf(out, "I2C Reading: %d, Test O/P: %dn", i2c, test);
  •             HAL_UART_Transmit(&hlpuart1, (uint8_t*)out, sizeof(out), 100);
  •             i2c = Read_i2c();
  •             test = interpolate_func(i2c);
  •              if(DAC_out <= UnderRange)
  •              {
  •                SPIMod_Set_Out_Value_uA(4000);
  •              }
  •              else if(DAC_out >= OverRange)
  •              {
  •                SPIMod_Set_Out_Value_uA(20000);
  •              }
  •              else
  •              {
  •                SPIMod_Set_Out_Value_uA(DAC_out);
  •              }
  •              HAL_Delay(150);
  •     /* USER CODE BEGIN 3 */
  •   }
  •   /* USER CODE END 3 */
  • }






回帖(1)

王燕

2022-12-8 15:48:20
问题可能出在 Read_i2c() 或 SPIMod_Set_Out_Value_uA() 中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分