/**
@page SPI_DataExchangeDMA SPI Communication Boards Data Exchange using DMA example
@verbatim
******************** (C) COPYRIGHT 2014 STMicroelectronics *******************
* @file SPI/SPI_TwoBoards/DataExchangeDMA/readme.txt
* @author MCD Application Team
* @version V1.4.0
* @date 24-July-2014
* @brief Description of the SPI Communication Boards Data Exchange using
* DMA example.
******************************************************************************
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
@endverbatim
@par Example Description
This example provides a small application in which joystick buttons are used
to trigger SPI communications using DMA and though using SPI firmware library.
- Hardware Description
To use this example, you need to load it on two STM32 boards (let's call them
Board A and Board B) then connect these two boards through SPI lines and GND.
In the STM32 master board (Board A), connect the timer output capture compare
channel into NSS line.
In the firmware example uncomment the dedicated line in the main.h file to use
the SPI peripheral as STM32 Master device or as STM32 Slave.
@verbatim
*------------------------------------------------------------------------------*
| BOARD A BOARD B |
| ____________________ ____________________ |
| | | | | |
| | | | | |
| | __________ ____|_______SCK_______|____ __________ | |
| | |SPI Master|____|_______MOSI______|____|SPI Slave | | |
| | | Device |____|_______MISO______|____| Device | | |
| | |__________|____|_______NSS_______|____|__________| | |
| | | | | | |
| | O LD1 TIM_CHx O__|___| | O LD1 | |
| | O LD2 Joystick | | O LD2 Joystick | |
| | O LD3 _ | | O LD3 _ | |
| | O LD4 |_| | | O LD4 |_| | |
| | | | | |
| | GND O--|-----------------|--O GND | |
| |____________________| |____________________| |
| |
| |
*------------------------------------------------------------------------------*
@endverbatim
@note
- The connection between the pins should use a short wires and a common Ground.
- Software Description
In master board, SPI peripheral is configured as Master full duplex with DMA
and NSS hardware mode.
The TIM2 is configured to generate 4KHz PWM signal with 50% duty cycle on TIM2_CH2
pin (PA.01), this signal is used as DMA trigger and as NSS signal input to latch
the SPI data transfers. Whereas in Slave board, SPI peripheral is configured as
Slave Full duplex with DMA and NSS hardware mode.
At each joystick buttons press:
- The Master sends the specific command to the Slave using the TIM2_CH2 DMA
request (DMA1_Channel3)(the command contains the transaction code (CMD_RIGHT,
CMD_LEFT, CMD_UP, CMD_DOWN or CMD_SEL) and receives the ACK command from the
Slave using SPI_Rx DMA request(DMA1_Channel2)
- The Slave receives the command using SPI_Rx DMA request(DMA1_Channel2) and sends
the ACK command using the SPI_Tx DMA request (DMA1_Channel3).
- The Master sends the defined NumberOfByte from TxBuffer using the TIM2_CH2 DMA
request (DMA1_Channel3) to the Slave and receives NumberOfByte from the Slave
using SPI_Rx DMA request(DMA1_Channel2) into Rxbuffer.
- The Slave sends the defined NumberOfByte from Txbuffer using the SPI_Tx DMA
request (DMA1_Channel3) to the Master and receives NumberOfByte from the Master
using SPI_Rx DMA request(DMA1_Channel2) into Rxbuffer.
- The Master compares the NumberOfByte received data with the defined ones into
TxBuffer and check the ACK command, received data correctness is signaled by LD
lightening and though as follow:
- Joystick JOY_RIGHT and data correctly received ==> LD2 and LD3 ON and LD4 OFF
- Joystick JOY_LEFT and data correctly received ==> LD4 ON, LD2 and LD3 are OFF
- Joystick JOY_UP and data correctly received ==> LD2 ON, LD3 and LD4 are OFF
- Joystick JOY_DOWN and data correctly received ==> LD3 ON, LD2 and LD4 are OFF
- Joystick JOY_SEL and data correctly received ==> LD2, LD3 and LD4 leds ON
- The Slave compares the NumberOfByte received data with the defined ones into
TxBuffer and check the received command,Received data correctness is signaled
by LED lightening and though as follow:
- Received command CMD_RIGHT and data correctly received ==> LD2 and LD3 ON and LD4 OFF
- Received command CMD_LEFT and data correctly received ==> LD2 ON, LD3 and LD4 are OFF
- Received command CMD_UP and data correctly received ==> LD2 ON, LD3 and LD4 are OFF
- Received command CMD_DOWN and data correctly received ==> LD3 ON, LD2 and LD4 are OFF
- Received command CMD_SEL and data correctly received ==> LD2, LD3 and LD4 leds ON
In both boards, the SPI is configured to use the slave hardware management to
manage the NSS pin.
The SysTick is configured to generate interrupt each 10ms. A dedicated counter
inside the SysTick ISR is used to toggle the LD1 each 100ms indicating that the
firmware is running.
A defined communication timeout is insuring that the application will not remain
stuck if the SPI communication is corrupted.
You can adjust this timeout through the USER_TIMEOUT define inside main.h file
depending on CPU frequency and application conditions (interrupts routines,
number of data to transfer, baudrate, CPU frequency...).
These operations can be repeated infinitely.
@par Directory contents
- SPI/SPI_TwoBoards/DataExchangeDMA/stm32f0xx_conf.h Library Configuration file
- SPI/SPI_TwoBoards/DataExchangeDMA/stm32f0xx_it.c Interrupt handlers
- SPI/SPI_TwoBoards/DataExchangeDMA/stm32f0xx_it.h Interrupt handlers header file
- SPI/SPI_TwoBoards/DataExchangeDMA/main.c Main program
- SPI/SPI_TwoBoards/DataExchangeDMA/main.h Main program header file
- SPI/SPI_TwoBoards/DataExchangeDMA/system_stm32f0xx.c STM32F0xx system source file
@note The "system_stm32f0xx.c" is generated by an automatic clock configuration
tool and can be easily customized to meet user application requirements.
To select different clock setup, use the "STM32F0xx_Clock_Configuration_VX.Y.Z.xls"
provided with the AN4055 package available on <a href="http://www.st.com/internet/mcu/class/1734.jsp"> ST Microcontrollers </a>
@par Hardware and Software environment
- This example runs on STM32F0xx devices.
- This exam
没有合适的资源?快使用搜索试试~ 我知道了~
STM32F0xx_StdPeriph_Lib_V1.5.0.zip_hurtwv2_library system_organi
共1394个文件
h:291个
c:275个
html:249个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 172 浏览量
2022-09-20
11:18:57
上传
评论
收藏 27.23MB ZIP 举报
温馨提示
STM32F0xx Core Library
资源推荐
资源详情
资源评论
收起资源包目录
STM32F0xx_StdPeriph_Lib_V1.5.0.zip_hurtwv2_library system_organi (1394个子文件)
logo.bmp 7KB
stm32f0xx_tim.c 130KB
stm32f0xx_rtc.c 93KB
stm32f0xx_usart.c 92KB
stm32f0xx_i2c_cpal.c 84KB
stm32f0xx_rcc.c 69KB
stm32072b_eval_cec.c 58KB
stm320518_eval_cec.c 58KB
stm32f0xx_can.c 57KB
stm320518_eval_lcd.c 56KB
stm32f0xx_i2c.c 55KB
stm32f0xx_spi.c 52KB
stm32f0xx_adc.c 47KB
fonts.c 46KB
stm32f0xx_dma.c 46KB
stm32f0xx_flash.c 42KB
stm32072b_eval_lcd.c 36KB
main.c 29KB
stm32f0xx_dac.c 26KB
stm320518_eval_spi_sd.c 25KB
stm32072b_eval_spi_sd.c 24KB
stm32f0xx_cec.c 24KB
stm320518_eval_i2c_ee.c 23KB
stm32072b_eval.c 23KB
stm32f0xx_i2c_cpal_hal.c 22KB
main.c 22KB
stm320518_eval.c 22KB
stm32072b_eval_i2c_tsensor.c 21KB
stm320518_eval_i2c_tsensor.c 21KB
stm32072b_eval_i2c_ee.c 21KB
stm320518_eval_i2c_ee_cpal.c 21KB
stm32f0xx_gpio.c 21KB
stm32f0xx_pwr.c 20KB
stm32f0xx_syscfg.c 19KB
main.c 17KB
main.c 17KB
main.c 15KB
stm32f0xx_comp.c 15KB
stm320518_eval_i2c_tsensor_cpal.c 15KB
main.c 15KB
main.c 14KB
stm32f0xx_crs.c 14KB
main.c 14KB
main.c 14KB
main.c 13KB
main.c 13KB
stm32f0xx_lp_modes.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
system_stm32f0xx.c 12KB
共 1394 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
周楷雯
- 粉丝: 80
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功