حالا بریم سراغ مد spi
این دستور جهت فرستنده و گیرنده رو تعیین میکنه
کد:
SPI_BiDirectionalLineConfig (SPI_Direction_TypeDef SPI_Direction)
یه چیزی داریم تو انتقال های به نام کدگذاری crc که اعدادی و که انتقال میده کد میکنه بعد تو پایت اخر به صورت تک بایتی و2 بایتی و............... حالت های مختلف قرار میده که تو انتقال های تو plc خیلی به درد میخوره در جاهایی که خیلی انتقال سالم مهم حکم حیاتی داره
با این دستور crc فعال میکنیم
کد:
SPI_CalculateCRCCmd (FunctionalState NewState)
دستور پاک کردن پرچم ها
کد:
SPI_ClearFlag (SPI_Flag_TypeDef SPI_FLAG)
دستوری که پرچم های انتظار و تو تابع وقفه پا ک میکنه
کد:
SPI_ClearITPendingBit (SPI_IT_TypeDef SPI_IT)
دستور فعال کردن و غیر فعال کردن مد spi
کد:
SPI_Cmd (FunctionalState NewState
ریست کردن به حالت پیش فرض
گرفتن کد crc
کد:
SPI_GetCRC (SPI_CRC_TypeDef SPI_CRC)
دستور وضعیت حالت های وقفه
کد:
SPI_GetITStatus (SPI_IT_TypeDef SPI_IT)
دستور تنظیمات کلی در یک تابع
کد:
SPI_Init (SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, SPI_Mode_TypeDef Mode, SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase, SPI_DataDirection_TypeDef Data_Direction, SPI_NSS_TypeDef Slave_Management, uint8_t CRCPolynomial)
فعال و غیر فعال کردن حالت وفقه
کد:
SPI_ITConfig (SPI_IT_TypeDef SPI_IT, FunctionalState NewState)
دستور چیپ سلکت بوسیله نرمافزار روی پایه NSS هر وقت بخواید روی پور چیزی بفرستید این پایه خودش صفر میشه و در پایان یک میشه
کد:
SPI_NSSInternalSoftwareCmd (FunctionalState NewState)
گرفتن دیتا 8 بیتی
کد:
SPI_ReceiveData (void)
فرستادن 8 بیتی
کد:
SPI_SendData (uint8_t Data)
نمونه کد
کد:
SPI_DeInit(); SPI_Init( SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_128, SPI_MODE_MASTER,
SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX,
SPI_NSS_SOFT, 0x07);
/* SD_SPI enable */
SPI_Cmd( ENABLE);
کد:
SPI_SendData(170) ;
Delay(100);