ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2007/08/21
    تهران
    845
    9

    ارتباط spi از طریق توابع hal با ماژول rc522

    با سلام و احترام
    در ارتباط برای خاندن رجیستر 0x37 که ویرایش ماژول است با استفاده از
    HAL_SPI_Transmit(&hspi1,d,1,20) و بعد از آن HAL_SPI_Receive(&hspi1,r,1,2000) معمولا دیتای خرابی دریافت می کنم که 0 یا ff است ولی وقتی دو بار HAL_SPI_TransmitReceive(&hspi1,d,r,2,2000);
    HAL_SPI_TransmitReceive(&hspi1,d,r,2,2000); را استفاده می کنم بار اول دیتا اشتباه است ولی دفعه بعد 92 هگز است که ویرایش است و بعد از آن هر بار که می خوانم عدد ویرایش درست است .
    چه تفاوتی بین این دو روش وجود دارد ؟
    بار اول 74 هگز جواب داده و بعد هر چند بار که سوال شده همان 92 و درست است .

    سوال بعدی :
    در صورتی که با تابع HAL_SPI_Transmit(&hspi1,d,2,2000); دتایی در رجیستری بنویسم به نظر می آید که دیتای mosi را در miso دریافت می کنم که خیلی عجیب است

    92 اولی جواب دستور قبلی است که همان ویرایش رو سوال کرده بودم و بعد از آن ..
  2. #2
    2007/08/21
    تهران
    845
    9

    پاسخ : ارتباط spi از طریق توابع hal با ماژول rc522

    با سلام
    هنوز هم من از برنامه جواب نگرفته ام و حتی با یک برد دیگر هم تست کردم و فرقی نکرد
    به زبان خیلی ساده :
    در یک حلقه با دستوری مقدار رجیستر VersionReg یا همان 0x37 را می خوانم و فقط بار اول جواب 0x92 است و مابقی دفعات 0xee است واقعا عجیبه برای من
    کدها رو در ادامه قرار می دم :

    کد:
    void MX_SPI1_Init(void)
    {
    
        /* USER CODE BEGIN SPI1_Init 0 */
    
        /* USER CODE END SPI1_Init 0 */
    
        /* USER CODE BEGIN SPI1_Init 1 */
    
        /* USER CODE END SPI1_Init 1 */
        /* SPI1 parameter configuration*/
        hspi1.Instance = SPI1;
        hspi1.Init.Mode = SPI_MODE_MASTER;
        hspi1.Init.Direction = SPI_DIRECTION_2LINES;
        hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
        hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
        hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
        hspi1.Init.NSS =SPI_NSS_HARD_OUTPUT;// SPI_NSS_SOFT;
        hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
        hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
        hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
        hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
        hspi1.Init.CRCPolynomial = 7;
        //HAL_Delay(5);
        if (HAL_SPI_Init(&hspi1) != HAL_OK)
        {
            Error_Handler();
        }
        /* USER CODE BEGIN SPI1_Init 2 */
        //__HAL_SPI_ENABLE(&hspi1);
        /* USER CODE END SPI1_Init 2 */
    
    }
    کد:
    unsigned char ReadRawRC(unsigned char Address)
    {
        
        uint8_t val;
        uint8_t buf;
        HAL_GPIO_WritePin(RD_SS_Port, RD_SS_Pin, GPIO_PIN_RESET);
        buf = ((Address << 1) & 0x7E) | 0x80;
        if (HAL_SPI_Transmit(&hspi1, &buf, 1, 0xFFFF) == HAL_OK)
        {
            buf = MFRC522_DUMMY;
            HAL_SPI_TransmitReceive(&hspi1, &buf, &val, 1, 0xFFFF);
        }
        HAL_GPIO_WritePin(RD_SCK_Port, RD_SCK_Pin, GPIO_PIN_SET);
    return val;
        
        
    }
    کد:
    while (1)
    
            {
    
                status=ReadRawRC(VersionReg);
                printf(" version_reg=%x\r\n",status);
    
                HAL_Delay(4000);
            }
    کد:
    void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
    {
      GPIO_InitTypeDef GPIO_InitStruct = {0};
      if(hspi->Instance==SPI1)
      {
      /* USER CODE BEGIN SPI1_MspInit 0 */
    
      /* USER CODE END SPI1_MspInit 0 */
        /* Peripheral clock enable */
        __HAL_RCC_SPI1_CLK_ENABLE();
    
        __HAL_RCC_GPIOA_CLK_ENABLE();
        /**SPI1 GPIO Configuration
        PA5     ------> SPI1_SCK
        PA6     ------> SPI1_MISO
        PA7     ------> SPI1_MOSI
        */
        GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    
        GPIO_InitStruct.Pin = GPIO_PIN_6;
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    
      /* USER CODE BEGIN SPI1_MspInit 1 */
      //  HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);
      //    HAL_NVIC_EnableIRQ(SPI1_IRQn);
      /* USER CODE END SPI1_MspInit 1 */
      }
    
    }
    
    /**
    خواهش می کنم اگر کسی می تونه کمکم کنه
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. ارتباط TCP از طریق ماژول GSM/GPRS
    توسط mahdi89 در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 14
    آخرين نوشته: 2020/02/19, 22:44
  2. سرعت SPI برای ارتباط با ماژول RC522
    توسط FeriSali در انجمن ماژول های RFID و NFC
    پاسخ: 0
    آخرين نوشته: 2019/12/15, 15:47
  3. ارتباط دو میکرو از طریق ماژول های RF
    توسط behzadsen در انجمن میکروکنترلرهای AVR
    پاسخ: 17
    آخرين نوشته: 2019/06/14, 13:52
  4. مشکل در ارتباط دو ماژول از طریق i2c در avr
    توسط hesam1995 در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2018/01/26, 18:01
  5. ارتباط بین دو ماژول SIM900 از طریق gprs
    توسط arvini در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 0
    آخرين نوشته: 2015/11/18, 11:39

کاربرانی که این تاپیک را مشاهده کرده اند: 5

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •