Merge branch 'work' of https://github.com/stevstrong/Arduino_STM32 into merge_stevstrong

This commit is contained in:
Roger Clark 2017-07-16 08:34:20 +10:00
commit 8bf5f62d6f
34 changed files with 93 additions and 94 deletions

1
.gitignore vendored
View File

@ -6,6 +6,5 @@ other/maple-bootloader/cscope.out
other/maple-bootloader/build
other/maple-bootloader/*~
*.o
tools/src/stm32flash_serial/src/parsers/parsers.a
*.bak
*.1

View File

@ -11,7 +11,7 @@ discovery_f407.upload.protocol=stlink
#discovery_f407.upload.use_1200bps_touch=false
discovery_f407.upload.file_type=bin
discovery_f407.upload.maximum_size=1048576
discovery_f407.upload.maximum_data_size=196608
discovery_f407.upload.maximum_data_size=131072
#discovery_f407.upload.usbID=1EAF:0003
#discovery_f407.upload.altID=1
@ -43,9 +43,8 @@ generic_f407v.upload.tool=stlink_upload
generic_f407v.upload.protocol=stlink
generic_f407v.upload.file_type=bin
generic_f407v.upload.ram.maximum_size=131072
generic_f407v.upload.flash.maximum_size=514288
generic_f407v.upload.maximum_size=514288
generic_f407v.upload.maximum_data_size=131072
#generic_f407v.upload.usbID=0483:3748
#generic_f407v.upload.altID=1
@ -82,7 +81,7 @@ stm32f4stamp.upload.protocol=maple_dfu
#stm32f4stamp.upload.use_1200bps_touch=false
stm32f4stamp.upload.file_type=bin
stm32f4stamp.upload.maximum_size=1048576
stm32f4stamp.upload.maximum_data_size=196608
stm32f4stamp.upload.maximum_data_size=131072
stm32f4stamp.upload.usbID=0483:df11
stm32f4stamp.upload.altID=0
@ -117,7 +116,7 @@ netduino2plus.upload.protocol=maple_dfu
#netduino2plus.upload.use_1200bps_touch=false
netduino2plus.upload.file_type=bin
netduino2plus.upload.maximum_size=1048576
netduino2plus.upload.maximum_data_size=196608
netduino2plus.upload.maximum_data_size=131072
netduino2plus.upload.usbID=0483:df11
netduino2plus.upload.altID=0

View File

@ -32,11 +32,11 @@
#include "fsmc.h"
#include "gpio.h"
#ifdef STM32_HIGH_DENSITY
#if defined(STM32_HIGH_DENSITY) && defined(BOARD_generic_f407v) // pins not yet defined for disco F407
/**
* Configure FSMC GPIOs for use with LCDs.
*/
*/
void fsmc_init(void) {
rcc_clk_enable(RCC_FSMC);

View File

@ -40,7 +40,7 @@
#ifndef _FSMC_H_
#define _FSMC_H_
#include <libmaple\util.h>
#include <libmaple/util.h>
#include "libmaple_types.h"
#ifdef __cplusplus

View File

@ -54,16 +54,14 @@ spi_dev *SPI3 = &spi3;
* Routines
*/
void spi_config_gpios(spi_dev *ignored,
void spi_config_gpios(spi_dev *dev,
uint8 as_master,
uint8 nss_pin,
uint8 sck_pin,
uint8 miso_pin,
uint8 mosi_pin) {
if (as_master) {
// gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);
gpio_set_mode(sck_pin, GPIO_AF_OUTPUT_PP);
// gpio_set_mode(comm_dev, miso_bit, GPIO_INPUT_FLOATING);
gpio_set_mode(miso_pin, GPIO_AF_INPUT_PD);
gpio_set_mode(mosi_pin, GPIO_AF_OUTPUT_PP);
} else {
@ -72,6 +70,15 @@ void spi_config_gpios(spi_dev *ignored,
gpio_set_mode(miso_pin, GPIO_AF_OUTPUT_PP);
gpio_set_mode(mosi_pin, GPIO_INPUT_FLOATING);
}
uint8_t af_mode = 6;
if(dev->clk_id <= RCC_SPI2) { af_mode = 5; }
if(!as_master) {
gpio_set_af_mode(nss_pin, af_mode);
}
gpio_set_af_mode(sck_pin, af_mode);
gpio_set_af_mode(miso_pin, af_mode);
gpio_set_af_mode(mosi_pin, af_mode);
}
void spi_foreach(void (*fn)(spi_dev*)) {

View File

@ -26,7 +26,7 @@
#include "usbd_ioreq.h"
#include "usbd_req.h"
#include <VCP\usbd_desc.h>
#include <VCP/usbd_desc.h>

View File

@ -24,8 +24,8 @@
#ifndef __USB_CDC_CORE_H_
#define __USB_CDC_CORE_H_
#include <STM32_USB_Device_Library\Core\inc/usbd_ioreq.h>
#include <STM32_USB_OTG_Driver\inc\usb_core.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_ioreq.h>
#include <STM32_USB_OTG_Driver/inc/usb_core.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -58,10 +58,10 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <VCP\usb_conf.h>
#include <STM32_USB_Device_Library\Class\cdc\inc\usbd_cdc_core.h>
#include <VCP\usbd_desc.h>
#include <STM32_USB_Device_Library\Core\inc\usbd_req.h>
#include <VCP/usb_conf.h>
#include <STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h>
#include <VCP/usbd_desc.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_req.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY

View File

@ -26,7 +26,7 @@
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_OTG_Driver/inc/usb_dcd.h>
#include "usbd_def.h"
#include <VCP\usbd_conf.h>
#include <VCP/usbd_conf.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -24,7 +24,7 @@
#ifndef __USBD_DEF_H
#define __USBD_DEF_H
/* Includes ------------------------------------------------------------------*/
#include <VCP\usbd_conf.h>
#include <VCP/usbd_conf.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -27,7 +27,7 @@
/* Includes ------------------------------------------------------------------*/
#include "usbd_def.h"
#include "usbd_core.h"
#include <VCP\usbd_conf.h>
#include <VCP/usbd_conf.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY

View File

@ -20,11 +20,11 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_core.h>
#include <STM32_USB_Device_Library\Core\inc\usbd_req.h>
#include <STM32_USB_Device_Library\Core\inc\usbd_ioreq.h>
#include <STM32_USB_OTG_Driver\inc\usb_dcd_int.h>
#include <STM32_USB_OTG_Driver\inc\usb_bsp.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_core.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_req.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_ioreq.h>
#include <STM32_USB_OTG_Driver/inc/usb_dcd_int.h>
#include <STM32_USB_OTG_Driver/inc/usb_bsp.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -20,7 +20,7 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_ioreq.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_ioreq.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{
*/

View File

@ -20,9 +20,9 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_req.h>
#include <STM32_USB_Device_Library\Core\inc\usbd_ioreq.h>
#include <VCP\usbd_desc.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_req.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_ioreq.h>
#include <VCP/usbd_desc.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY

View File

@ -24,7 +24,7 @@
#define __USB_CORE_H__
/* Includes ------------------------------------------------------------------*/
#include <VCP\usbd_conf.h>
#include <VCP/usbd_conf.h>
#include "usb_regs.h"
#include "usb_defines.h"

View File

@ -24,7 +24,7 @@
#define __USB_DEF_H__
/* Includes ------------------------------------------------------------------*/
#include <VCP\usbd_conf.h>
#include <VCP/usbd_conf.h>
/** @addtogroup USB_OTG_DRIVER
* @{

View File

@ -24,8 +24,8 @@
#define __USB_OTG_REGS_H__
/* Includes ------------------------------------------------------------------*/
#include <VCP\usbd_conf.h>
#include <libmaple\libmaple_types.h>
#include <VCP/usbd_conf.h>
#include <libmaple/libmaple_types.h>
/** @addtogroup USB_OTG_DRIVER
* @{

View File

@ -20,8 +20,8 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_OTG_Driver\inc\usb_bsp.h>
#include <STM32_USB_OTG_Driver\inc\usb_core.h>
#include <STM32_USB_OTG_Driver/inc/usb_bsp.h>
#include <STM32_USB_OTG_Driver/inc/usb_core.h>
/** @addtogroup USB_OTG_DRIVER

View File

@ -20,8 +20,8 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_OTG_Driver\inc\usb_dcd.h>
#include <STM32_USB_OTG_Driver\inc\usb_bsp.h>
#include <STM32_USB_OTG_Driver/inc/usb_dcd.h>
#include <STM32_USB_OTG_Driver/inc/usb_bsp.h>
/** @addtogroup USB_OTG_DRIVER

View File

@ -20,12 +20,12 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_OTG_Driver\inc\usb_dcd_int.h>
#include <STM32_USB_OTG_Driver/inc/usb_dcd_int.h>
typedef int IRQn_Type;
#define __NVIC_PRIO_BITS 4
#define __Vendor_SysTickConfig 1
#include <VCP\core_cm4.h>
#include <VCP/core_cm4.h>
/** @addtogroup USB_OTG_DRIVER

View File

@ -21,7 +21,7 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_OTG_Driver\inc\usb_bsp.h>
#include <STM32_USB_OTG_Driver/inc/usb_bsp.h>
#include "usbd_conf.h"
#include <libmaple/gpio.h>
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

View File

@ -26,7 +26,7 @@
/* Includes ------------------------------------------------------------------*/
//#include "stm32f4xx.h"
#include <STM32_USB_Device_Library\Class\cdc\inc\usbd_cdc_core.h>
#include <STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h>
#include "usbd_conf.h"

View File

@ -20,11 +20,11 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_core.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_core.h>
#include "usbd_desc.h"
#include <STM32_USB_Device_Library\Core\inc\usbd_req.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_req.h>
#include "usbd_conf.h"
#include <STM32_USB_OTG_Driver\inc\usb_regs.h>
#include <STM32_USB_OTG_Driver/inc/usb_regs.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -25,7 +25,7 @@
#define __USB_DESC_H
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_def.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_def.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{

View File

@ -20,8 +20,8 @@
*/
/* Includes ------------------------------------------------------------------*/
#include <STM32_USB_Device_Library\Core\inc\usbd_usr.h>
#include <STM32_USB_Device_Library\Core\inc\usbd_ioreq.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_usr.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_ioreq.h>
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY

View File

@ -4,11 +4,11 @@
#include <STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h>
#include <STM32_USB_Device_Library/Core/inc/usbd_usr.h>
#include <VCP\usbd_desc.h>
#include <VCP/usbd_desc.h>
#include "usb.h"
#include <libmaple/gpio.h>
#include <libmaple/rccF4.h>
#include <VCP\usbd_cdc_vcp.h>
#include <VCP/usbd_cdc_vcp.h>
#include <boards.h>
USB_OTG_CORE_HANDLE USB_OTG_dev;
@ -96,7 +96,7 @@ RESULT usbPowerOff(void) {
void usbDsbISR(void) {};
#include <STM32_USB_OTG_Driver\inc\usb_dcd_int.h>
#include <STM32_USB_OTG_Driver/inc/usb_dcd_int.h>
void __irq_OTG_FS_IRQHandler(void)
{
USBD_OTG_ISR_Handler (&USB_OTG_dev);

View File

@ -5,7 +5,7 @@
extern "C" {
#endif
#include <VCP\usb_conf.h>
#include <VCP/usb_conf.h>
typedef enum _RESULT
{

View File

@ -24,11 +24,12 @@
#include <boards.h>
#define USE_DEBUG_MODE 0
#define USE_YIELD 0
//==============================================================================
//#define SDHC_PROCTL_DTW_4BIT 0x01
#define CMD8_RETRIES 10
#define BUSY_TIMEOUT_MILLIS 500
#define BUSY_TIMEOUT_MILLIS 750
//==============================================================================
#define CMD_RESP_NONE SDIO_CMD_WAIT_NO_RESP
#define CMD_RESP_R1 SDIO_CMD_WAIT_SHORT_RESP // normal response
@ -137,7 +138,8 @@ static void _panic(const char *message, uint32_t code)
delay(250);
}
}
/*===========================================================================
/*===========================================================================*/
#if USE_YIELD
void yield(void)
{
uint32_t val = SDIO->STA;
@ -169,7 +171,8 @@ void yield(void)
_panic(" - DMA: Data Transmission Error ", val);
}
//Serial.write('.');
}*/
}
#endif
//=============================================================================
// Error function and macro.
inline bool setSdErrorCode(uint8_t code, uint32_t line) {
@ -191,11 +194,11 @@ void sdhc_isr() {
//-----------------------------------------------------------------------------
static bool cardCommand(uint16_t xfertyp, uint32_t arg)
{
#if USE_DEBUG_MODE
#if USE_DEBUG_MODE==2
Serial.print("cardCommand: "); Serial.print(xfertyp&SDIO_CMD_CMDINDEX); Serial.print(", arg: "); Serial.print(arg, HEX);
#endif
uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if fails, zero if OK
#if USE_DEBUG_MODE
#if USE_DEBUG_MODE==2
Serial.print(", resp: "); Serial.print(resp, HEX);
Serial.print(", SDIO->STA: "); Serial.print(SDIO->STA, HEX); Serial.print(", cmd_resp: "); Serial.print(SDIO->RESP[0], HEX);
if ( (xfertyp&SDIO_CMD_WAIT_LONG_RESP)==SDIO_CMD_WAIT_LONG_RESP ) {
@ -330,6 +333,7 @@ static bool dmaTrxStart(uint8_t* buf, uint32_t n, uint8_t dir)
static bool dmaTrxEnd(bool multi_block)
{
if ( !waitDmaStatus() ) {
DBG_PRINT();
return sdError(SD_CARD_ERROR_DMA);
}
if ( waitTimeout(isBusyTransferComplete) ) {
@ -536,6 +540,9 @@ uint32_t SdioCard::kHzSdClk() {
/*---------------------------------------------------------------------------*/
bool SdioCard::readBlock(uint32_t lba, uint8_t* buf)
{
#if USE_DEBUG_MODE
Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX);
#endif
// prepare SDIO and DMA for data read transfer
dmaTrxStart((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD);
// send command to start data transfer
@ -560,6 +567,11 @@ bool SdioCard::readBlock(uint32_t lba, uint8_t* buf)
/*---------------------------------------------------------------------------*/
bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n)
{
#if USE_DEBUG_MODE
Serial.print("readBlocks: "); Serial.print(lba);
//Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX);
Serial.print(", "); Serial.println(n);
#endif
if ((uint32_t)buf & 3) {
for (size_t i = 0; i < n; i++, lba++, buf += 512) {
if (!readBlock(lba, buf)) {
@ -672,9 +684,12 @@ uint8_t SdioCard::type() {
/*---------------------------------------------------------------------------*/
bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf)
{
#if USE_DEBUG_MODE
Serial.print("writeBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX);
#endif
uint8_t * ptr = (uint8_t *)buf;
if (3 & (uint32_t)ptr) {
//Serial.print("writeBlock: "); Serial.print(lba);
Serial.print("writeBlock: "); Serial.print(lba);
Serial.print(", buf: "); Serial.print((uint32_t)ptr, HEX);
//memcpy(aligned, buf, 512);
register uint8_t * src = (uint8_t *)ptr;
@ -701,6 +716,11 @@ bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf)
/*---------------------------------------------------------------------------*/
bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n)
{
#if USE_DEBUG_MODE
Serial.print("writeBlocks: "); Serial.print(lba);
//Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX);
Serial.print(", "); Serial.println(n);
#endif
if (3 & (uint32_t)buf) { // misaligned buffer address, write single blocks
for (size_t i = 0; i < n; i++, lba++, buf += 512) {
if (!writeBlock(lba, buf)) {
@ -709,7 +729,6 @@ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n)
}
return true;
}
//Serial.print("writeBlocks: "); Serial.print(lba); Serial.print(", "); Serial.print(n);
if (yieldTimeout(isBusyCMD13)) {
return sdError(SD_CARD_ERROR_CMD13);
}

View File

@ -611,29 +611,6 @@ static void configure_gpios(spi_dev *dev, bool as_master) {
Serial.println(")");
#endif
#ifdef STM32F4
if(dev->clk_id <= RCC_SPI2) {
if(nssi) {
if(!as_master) {
gpio_set_af_mode(pins->nss, 5);
}
}
gpio_set_af_mode(pins->sck, 5);
gpio_set_af_mode(pins->miso, 5);
gpio_set_af_mode(pins->mosi, 5);
} else {
if(nssi) {
if(!as_master) {
gpio_set_af_mode(pins->nss, 6);
}
}
gpio_set_af_mode(pins->sck, 6);
gpio_set_af_mode(pins->miso, 6);
gpio_set_af_mode(pins->mosi, 6);
}
#endif
spi_config_gpios(dev, as_master, pins->nss, pins->sck, pins->miso, pins->mosi);
}
@ -674,4 +651,4 @@ static spi_baud_rate determine_baud_rate(spi_dev *dev, uint32_t freq) {
}
//SPIClass SPI(3);
SPIClass SPI(3); // needed for external libs

View File

@ -6,6 +6,6 @@ paragraph=implements the same API as stock Ethernet-lib. Just replace the includ
category=Communication
url=https://github.com/ntruchsess/arduino_uip
architectures=STM32F4
version=1.04
version=1.0.4
dependencies=
core-dependencies=arduino (>=1.5.0)

View File

@ -10,13 +10,13 @@ version=0.1.0
# ----------------------
compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
compiler.c.cmd=arm-none-eabi-gcc
compiler.c.flags=-c -g -Os -w -MMD -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin}
compiler.c.flags=-c -g -Os -Wall -MMD -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin}
compiler.c.elf.cmd=arm-none-eabi-g++
compiler.c.elf.flags=-Os -Wl,--gc-sections
compiler.S.cmd=arm-none-eabi-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -MMD
compiler.cpp.cmd=arm-none-eabi-g++
compiler.cpp.flags=-c -g -Os -w -MMD -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin}
compiler.cpp.flags=-c -g -Os -Wall -MMD -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin}
compiler.ar.cmd=arm-none-eabi-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=arm-none-eabi-objcopy
@ -123,4 +123,3 @@ tools.stlink_upload.path.linux64={runtime.hardware.path}/tools/linux64
tools.stlink_upload.upload.params.verbose=-d
tools.stlink_upload.upload.params.quiet=
tools.stlink_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin"

View File

@ -27,7 +27,6 @@
#ifndef _WIRISH_ARDUINO_H_
#define _WIRISH_ARDUINO_H_
//#warning Include Arduino.h from system\libmaple
#include "wirish.h"

View File

@ -34,8 +34,8 @@
#include "discovery_f4.h"
#include <libmaple\gpio.h>
#include <libmaple\rcc.h>
#include <libmaple/gpio.h>
#include <libmaple/rcc.h>
#include "wirish_types.h"

View File

@ -39,9 +39,9 @@ extern "C"{
//#include "generic_f407v.h"
//#include "fsmc.h"
#include <libmaple\gpio.h>
#include <libmaple\rcc.h>
#include <libmaple\timer.h>
#include <libmaple/gpio.h>
#include <libmaple/rcc.h>
#include <libmaple/timer.h>
#include <wirish_types.h>