{"id":293,"date":"2017-11-23T20:14:33","date_gmt":"2017-11-23T19:14:33","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=293"},"modified":"2017-12-30T19:29:03","modified_gmt":"2017-12-30T18:29:03","slug":"06-spi_lolevel-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=293","title":{"rendered":"06-SPI_LoLevel-Library (STM32F429)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=291\" title=\"05-SDRAM-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 05-SDRAM-Library (STM32F429)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=295\" title=\"07-LCD_ILI9341-Library (STM32F429)\">07-LCD_ILI9341-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>diese Library dient zum benutzen der SPI-Schnittstelle im Master-Mode<\/p>\n<p>die SPI-Pins die benutzt werden sollen, m\u00fcssen im C-File eingetragen werden<br \/>\n(im H-File kann der Clock-Vorteiler gew\u00e4hlt werden)<\/p>\n<p>die Library kann als LoLevel-Funktion nur die Schnittstelle (in einem der 8 SPI-Modes) initialisieren und ein Byte per SPI senden\/empfangen. Das setzen der ChipSelect-Leitung muss von der \u00dcbergeordneten Funktion gemacht werden (siehe z.B. <a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=231\">MAX5250-Lib<\/a>)<\/p>\n<p>es gibt 6 identische Librarys, getrennt f\u00fcr SPI1 bis SPI6<\/p>\n<p>im Beispiel wurde SPI5 benutzt mit dieser Pinbelegung :<\/p>\n<pre lang=\"c\" line=\"1\">SCK an PF7\r\nMOSI an PF9\r\nMISO an PF8<\/pre>\n<p><strong>Enumerationen (f\u00fcr SPI1) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  SPI_MODE_0_MSB = 0,  \/\/ CPOL=0, CPHA=0 (MSB-First)\r\n  SPI_MODE_1_MSB,      \/\/ CPOL=0, CPHA=1 (MSB-First)\r\n  SPI_MODE_2_MSB,      \/\/ CPOL=1, CPHA=0 (MSB-First)\r\n  SPI_MODE_3_MSB,      \/\/ CPOL=1, CPHA=1 (MSB-First)\r\n  SPI_MODE_0_LSB,      \/\/ CPOL=0, CPHA=0 (LSB-First)\r\n  SPI_MODE_1_LSB,      \/\/ CPOL=0, CPHA=1 (LSB-First)\r\n  SPI_MODE_2_LSB,      \/\/ CPOL=1, CPHA=0 (LSB-First)\r\n  SPI_MODE_3_LSB       \/\/ CPOL=1, CPHA=1 (LSB-First) \r\n}SPI1_Mode_t;<\/pre>\n<p><strong>Funktionen (f\u00fcr SPI1) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_SPI1_Init(SPI1_Mode_t mode); \/\/ zum initialisieren der SPI-Schnittstelle\r\nuint8_t UB_SPI1_SendByte(uint8_t wert);     \/\/ zum senden\/empfangen eines Bytes<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 25.10.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F429\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der SPI-LoLevel-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/ In Configuration diese Define hinzuf\u00fcgen :\r\n\/\/ \"STM32F429_439xx\" , \"__ASSEMBLY__\" , \"USE_STDPERIPH_DRIVER\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_spi5.h\"\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ ein Byte per SPI senden und empfangen\r\n\/\/--------------------------------------------------------------\r\nuint8_t spi_send(uint8_t wert)\r\n{\r\n  uint8_t ret_wert;\r\n\r\n  \/\/ hier Code einf\u00fcgen und\r\n  \/\/ ChipSelect-Pin auf LO legen\r\n\r\n  \/\/ byte senden und empfangen\r\n  ret_wert=UB_SPI5_SendByte(wert);\r\n\r\n  \/\/ hier Code einf\u00fcgen und\r\n  \/\/ ChipSelect-Pin auf HI legen\r\n\r\n  return(ret_wert);\r\n}\r\n\r\nint main(void)\r\n{\r\n  uint8_t wert;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ SPI5 im Mode0_MSB initialisieren\r\n  UB_SPI5_Init(SPI_MODE_0_MSB);\r\n\r\n  \/\/ den Wert 0x45 per SPI senden\r\n  \/\/ und ein Byte empfangen\r\n  wert=spi_send(0x45);\r\n\r\n  while(1)\r\n  {\r\n\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/10\/SPI_FullDuplex_f429_v101.zip\">SPI_FullDuplex_f429_v101<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/10\/Demo_F429_06.zip\">Demo_F429_06<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>diese Library dient zum benutzen der SPI-Schnittstelle im Master-Mode die SPI-Pins die benutzt werden sollen, m\u00fcssen im C-File eingetragen werden (im H-File kann der Clock-Vorteiler gew\u00e4hlt werden) die Library kann als LoLevel-Funktion nur die Schnittstelle (in einem der 8 SPI-Modes) &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=293\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":6,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[9,49,102],"class_list":["post-293","page","type-page","status-publish","hentry","category-stm32f429","tag-library","tag-spi","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=293"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/293\/revisions"}],"predecessor-version":[{"id":1666,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/293\/revisions\/1666"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/160"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}