02166766927 -02166703652
atrinelectronic@gmail.com تهران پاساژ امجد طبقه1 واحد 16
دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی DS1307 (بخش سوم)

دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی DS1307 (بخش سوم)

2019-01-10 14:30:51

جلسه پنجاهم _ بررسی توابع و دستورات مربوط به  واحد I2C در نرم افزار Keil

در این جلسه قصد داریم تا با دستورات و توابع مربوط به واحد I2C آشنا شویم، پس در ابتدا برنامه تولید شده توسط نرم افزار STM32CubeMX را باز می کنیم و به سراغ فایل main.h می رویم و به توضیح خطوط مربوط به واحد I2C می پردازیم.

استراکچر مربوط به واحد I2C می باشد.

معرفی تابع مربوط به تنظیمات I2C

 

تابع مربوط به تنظیمات واحد I2C می باشد. همانطور که در تصویر بالا نیز مشخص است مقادیر تنظیم شده در نرم افزار STM32CubeMX برای مقادیر اولیه، در این قسمت تنظیم می شوند.

برای دسترسی به دیگر توابع مربوط به I2C باید به فایل stm32f1xx_hal_i2c.c مراجعه نمایید. . برای دسترسی به این فایل باید در پوشه Drivers/STM32F1xx_HAL_Driver بر روی فایل stm32f1xx_hal_ i2c.c دابل کلیک نماییم.

حال به بررسی برخی از توابع پر کاربرد این کتابخانه می پردازیم:

HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای انتقال داده به یک Slave استفاده می شود همانطور که قبلا عنوان شد 4 مد ارتباطی وجود دارد که به شرح زیر می باشد:

  1. Master ارسال کننده
  2. Master دریافت کننده
  3. Slave ارسال کننده
  4. Slave دریافت کننده

دستور بالا برای حالت اول استفاده می شود. این تابع دارای 5 آرگومان می باشد که آرگومان اول اشاره گر به استراکچر مربوط به واحد I2C می باشد و آرگومان دوم آدرس دستگاه مورد نظر را مشخص می کند و آرگومان سوم اشاره گر به دیتا مورد نظر می باشد. در آرگومان چهارم تعداد دیتا مورد نظر برای ارسال را مشخص می کنیم و در آرگومان پنجم زمان Timeout را ارسال می کنیم.

HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای دریافت داده از Slave استفاده می شود و برای حالت دوم از این تابع استفاده می کنیم که آرگومان های ورودی آن مشابه تابع HAL_I2C_Master_Transmit می باشد.

 

HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای زمانیکه میکرو در حالت Slave پیکربندی شده و قصد ارسال دیتا به Master را دارد استفاده می شود(حالت سوم). این تابع 4 آرگومان دریافت می کند که آرگومان اول اشاره گر به استراکچر مربوط به واحد I2C می باشد و آرگومان دوم اشاره گر به دیتا مورد نظر می باشد. در آرگومان سوم تعداد دیتا مورد نظر برای ارسال را مشخص می کنیم و در آرگومان چهارم زمان Timeout را ارسال می کنیم.

 

HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای زمانیکه میکرو در حالت Slave پیکربندی شده و قصد دریافت دیتا از Master را دارد استفاده می شود(حالت چهارم). این تابع نیز مانند تابع HAL_I2C_Slave_Transmit دارای 4 آرگومان ورودی می باشد.

 

HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای نوشتن دیتا مورد نظر در آدرس خاصی از حافظه استفاده می شود که دارای 7 آرگومان ورودی می باشد که آرگومان اول اشاره گر به استراکچر مربوط به واحد I2C می باشد و آرگومان دوم آدرس دستگاه مورد نظر را مشخص می کند. آرگومان سوم آدرس حافظه مورد نظر را مشخص می کند و آرگومان چهارم اندازه حافظه مورد نظر را مشخص می کند . آرگومان پنجم اشاره گر به دیتا مورد نظر می باشد. در آرگومان ششم تعداد دیتا مورد نظر برای ارسال را مشخص می کنیم و در آرگومان هفتم زمان Timeout را ارسال می کنیم.

HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای خواندن دیتا مودر نظر در آدرس خاصی از حافظه استفاده می شود که مانند تابع HAL_I2C_Mem_Write دارای 7 آرگومان ورودی می باشد.

                                                                                                                                                                 دلتون شاد و لبتون پر خنده

                                                                                                                                                                          محمد هادی دشتی

برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST  ) کلیک کنید.

برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام  ) کلیک کنید.

برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX   ) کلیک کنید.

برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX  ) کلیک کنید.

برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.

برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.

برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.

برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.

برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.

برای مشاهده آموزش جلسه دهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه یازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه دوازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه سیزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه چهاردهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی(جلسه اول) ) کلیک کنید.

برای مشاهده آموزش جلسه پانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه شانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه هفدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه هجدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه نوزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیستم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و دوم (دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و پنجم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد DAC(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و ششم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد DAC(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و هفت(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و هشت(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست ونهم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی ام(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش چهارم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی System Tick Timer) کلیک کنید.

برای مشاهده آموزش جلسه سیو دوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی SPI (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و پنج(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد RTC (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و ششم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد RTC (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و هفتم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد Watchdog  (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و هشتم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد Watchdog  (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و نهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه چهلم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و دوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و پنجم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش چهارم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل وششم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش پنجم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و هفتم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش ششم)) کلیک کنید.

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن