جلسه سی و چهارم _ بررسی توابع مربوط به واحد SPI در نرم افزار Keil
در این جلسه قصد داریم تا به معرفی توابع و دستورات مربوط به واحد SPI بپردازیم. پس از فعال نمودن واحد SPI و انجام تنظیمات مربوط به آن در نرم افزار STM32CubeMX ، با ساخت پروژه توابع مربوط به آن در برنامه اضافه می شود. در ابتدا به بررسی این توابع در فایل main.c می پردازیم.
استراکچر مربوط به تنظیمات واحد SPI می باشد.
معرفی تابع تنظیمات واحد SPI1
تابع مربوط به انجام تنظیمات واحد SPI1 می باشد که پارامترهای تنظیم شده در نرم افزار STM32CubeMX در این قسمت تنظیم می شوند.
;hspi1.Init.Mode = SPI_MODE_MASTER
مشخص کننده حالت دستگاه می باشد که در این برنامه دستگاه را بصورت Master تعریف کرده است.
;hspi1.Init.DataSize = SPI_DATASIZE_8BIT
همانطور که قبلا نیز عنوان شد طول بسته دیتا 8 بیتی یا 16 بیتی می باشد که در این پروژه طول دیتا را 8 بیتی تنظیم کرده ایم
;hspi1.Init.CLKPolarity = SPI_POLARITY_LOW
حالت بیکاری پایه کلاک که به عنوان CPOL شناخته می شود را صفر تنظیم کرده ایم، به عبارت دیگر در زمان بیکاری و عدم تبادل داده پایه کلاک صفر منطقی می باشد.
;hspi1.Init.CLKPhase = SPI_PHASE_1EDGE
در این خط فاز SPI مشخص می شود که مشخص می کند نمونه برداری از دیتا را در لبه اول کلاک انجام دهد یا لبه دوم که در این برنامه لبه اول تنظیم شده است.
;hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB
این خط از برنامه نیز مشخص می کند که برای تبادل داده ابتدا بیت کم ارزش ارسال شود یا بیت پر ارزش که در این برنامه ما بیت پر ارزش را برای شروع تبادل داده ارسال می کنیم.
حال به سراغ توابع دیگر SPI در کتابخانه stm32f1xx_hal_spi.c می پردازیم. برای دسترسی به این فایل باید در پوشه Drivers/STM32F1xx_HAL_Driver بر روی فایل stm32f1xx_hal_spi.c دابل کلیک نماییم. این فایل دارای توابع زیادی در مورد واحد SPI می باشد که به چند مورد از توابع پر کاربرد آن اشاره می کنیم.
(HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout
از این تابع برای ارسال یک رشته استفاده می شود و در ورودی تابع چهار آرگومان وارد می شود که آرگومان اول مربوط به استراکچر تنظیمات SPI مورد نظر می باشد و آرگومان دوم نام رشته مورد نظر برای ارسال می باشد و آرگومان سوم نیز مربوط به تعداد داده برای ارسال می باشد. آرگومان چهارم نیز حداکثر زمان انتقال داده بر حسب میلی ثانیه می باشد.
(HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout
از این تابع برای دریافت یک رشته استفاده می شود و چهار آرگومان ورودی دارد که به ترتیب عبارتند از استراکچر مربوط به SPI مورد نظر، نام رشته مورد نظر برای ذخیره داده دریافتی، اندازه یا طول داده دریافتی و آخرین آرگومان نیز حداکثر زمان انتظار برای انتقال داده را بر حسب میلی ثانیه مشخص می کند.
(HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size
وظیفه این تابع ارسال یک رشته به همراه وقفه می باشد که آرگومان های ورودی آن، استراکچر مربوط به SPI مورد نظر، نام رشته مورد نظر برای انتقال و طول داده مورد نظر می باشند.
(HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size
برای دریافت یک رشته اطلاعات بدون توقف و همراه با اینتراپت از این تابع استفاده می شود و آرگومان های وردی آن، استراکچر مربوط به SPI مورد، نام رشته مورد نظر برای ذخیره اطلاعات و طول داده مورد نظر برای دریافت می باشد.
(HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi
از این تابع برای بررسی شرایط واحد SPI مورد استفاده قرار می گیرد و وضعیت واحد SPI را در آن لحظه مشخص می کند.
دلتون شاد و لبتون پر خنده
محمد هادی دشتی
برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST ) کلیک کنید.
برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام ) کلیک کنید.
برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.
برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.
برای مشاهده آموزش جلسه سیو دوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش اول)) کلیک کنید.
برای مشاهده آموزش جلسه سی و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش دوم)) کلیک کنید.