mirror of
https://github.com/apache/nuttx.git
synced 2026-05-21 04:52:02 +08:00
Kinetis SPI and I2C are 0 based
The K whole family line has max 4 or each. But the supported
parts have the maximums listed below:
K46 and K66 3 SPI SPI0-SPI2
K46 and K66 4 I2C I2C0-I2C3
This commit is contained in:
@@ -131,42 +131,56 @@ config ARCH_CHIP_MK64FN1M0VLL12
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FX512VLL12
|
||||
bool "MK64FX512VLL12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FX512VDC12
|
||||
bool "MK64FX512VDC12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FN1M0VDC12
|
||||
bool "MK64FN1M0VDC12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FX512VLQ12
|
||||
bool "MK64FX512VLQ12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FX512VMD12
|
||||
bool "MK64FX512VMD12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK64FN1M0VMD12
|
||||
bool "MK64FN1M0VMD12"
|
||||
select ARCH_FAMILY_K64
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK66FX1M0VMD18
|
||||
bool "MK66FX1M0VMD18"
|
||||
@@ -174,7 +188,8 @@ config ARCH_CHIP_MK66FX1M0VMD18
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_I2C3
|
||||
select KINETIS_HAVE_I2C4
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK66FN2M0VMD18
|
||||
bool "MK66FN2M0VMD18"
|
||||
@@ -182,7 +197,8 @@ config ARCH_CHIP_MK66FN2M0VMD18
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_I2C3
|
||||
select KINETIS_HAVE_I2C4
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK66FX1M0VLQ18
|
||||
bool "MK66FX1M0VLQ18"
|
||||
@@ -190,7 +206,8 @@ config ARCH_CHIP_MK66FX1M0VLQ18
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_I2C3
|
||||
select KINETIS_HAVE_I2C4
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
config ARCH_CHIP_MK66FN2M0VLQ18
|
||||
bool "MK66FN2M0VLQ18"
|
||||
@@ -198,7 +215,8 @@ config ARCH_CHIP_MK66FN2M0VLQ18
|
||||
select KINETIS_HAVE_I2C1
|
||||
select KINETIS_HAVE_I2C2
|
||||
select KINETIS_HAVE_I2C3
|
||||
select KINETIS_HAVE_I2C4
|
||||
select KINETIS_HAVE_SPI1
|
||||
select KINETIS_HAVE_SPI2
|
||||
|
||||
endchoice
|
||||
|
||||
@@ -238,7 +256,11 @@ config KINETIS_HAVE_I2C3
|
||||
bool
|
||||
default n
|
||||
|
||||
config KINETIS_HAVE_I2C4
|
||||
config KINETIS_HAVE_SPI1
|
||||
bool
|
||||
default n
|
||||
|
||||
config KINETIS_HAVE_SPI2
|
||||
bool
|
||||
default n
|
||||
|
||||
@@ -330,18 +352,23 @@ config KINETIS_FLEXCAN1
|
||||
config KINETIS_SPI0
|
||||
bool "SPI0"
|
||||
default n
|
||||
select SPI
|
||||
---help---
|
||||
Support SPI0
|
||||
|
||||
config KINETIS_SPI1
|
||||
bool "SPI1"
|
||||
default n
|
||||
select SPI
|
||||
depends on KINETIS_HAVE_SPI1
|
||||
---help---
|
||||
Support SPI1
|
||||
|
||||
config KINETIS_SPI2
|
||||
bool "SPI2"
|
||||
default n
|
||||
select SPI
|
||||
depends on KINETIS_HAVE_SPI2
|
||||
---help---
|
||||
Support SPI2
|
||||
|
||||
@@ -366,7 +393,15 @@ config KINETIS_I2C2
|
||||
select I2C
|
||||
depends on KINETIS_HAVE_I2C2
|
||||
---help---
|
||||
Support I2C1
|
||||
Support I2C2
|
||||
|
||||
config KINETIS_I2C3
|
||||
bool "I2C3"
|
||||
default n
|
||||
select I2C
|
||||
depends on KINETIS_HAVE_I2C3
|
||||
---help---
|
||||
Support I2C3
|
||||
|
||||
config KINETIS_I2S
|
||||
bool "I2S"
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
#include "kinetis.h"
|
||||
#include "freedom-k64f.h"
|
||||
|
||||
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
|
||||
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
@@ -98,6 +99,20 @@ void weak_function k64_spidev_initialize(void)
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI0
|
||||
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI1
|
||||
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
@@ -126,18 +141,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI3
|
||||
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
#include "kinetis.h"
|
||||
#include "kwikstik-k40.h"
|
||||
|
||||
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
|
||||
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
|
||||
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
|
||||
*
|
||||
* Description:
|
||||
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
|
||||
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
|
||||
* provided by board-specific logic. They are implementations of the select
|
||||
* and status methods of the SPI interface defined by struct spi_ops_s (see
|
||||
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
|
||||
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
|
||||
* pins.
|
||||
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
|
||||
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
|
||||
* board-specific logic. These functions will perform chip selection and
|
||||
* status operations using GPIOs in the way your board is configured.
|
||||
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
|
||||
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI0
|
||||
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI1
|
||||
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI3
|
||||
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
#include "kinetis.h"
|
||||
#include "teensy-3x.h"
|
||||
|
||||
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
|
||||
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
|
||||
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
|
||||
*
|
||||
* Description:
|
||||
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
|
||||
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
|
||||
* provided by board-specific logic. They are implementations of the select
|
||||
* and status methods of the SPI interface defined by struct spi_ops_s (see
|
||||
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
|
||||
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
|
||||
* pins.
|
||||
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
|
||||
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
|
||||
* board-specific logic. These functions will perform chip selection and
|
||||
* status operations using GPIOs in the way your board is configured.
|
||||
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
|
||||
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI0
|
||||
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI1
|
||||
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI3
|
||||
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
#include "kinetis.h"
|
||||
#include "twr-k60n512.h"
|
||||
|
||||
#if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2)
|
||||
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
@@ -71,10 +72,10 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: kinetis_spi1/2/3select and kinetis_spi1/2/3status
|
||||
* Name: kinetis_spi0/1/2select and kinetis_spi0/1/2status
|
||||
*
|
||||
* Description:
|
||||
* The external functions, kinetis_spi1/2/3select and kinetis_spi1/2/3status must be
|
||||
* The external functions, kinetis_spi0/1/2select and kinetis_spi0/1/2status must be
|
||||
* provided by board-specific logic. They are implementations of the select
|
||||
* and status methods of the SPI interface defined by struct spi_ops_s (see
|
||||
* include/nuttx/spi/spi.h). All other methods (including kinetis_spibus_initialize())
|
||||
@@ -83,7 +84,7 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
* 1. Provide logic in kinetis_boardinitialize() to configure SPI chip select
|
||||
* pins.
|
||||
* 2. Provide kinetis_spi1/2/3select() and kinetis_spi1/2/3status() functions in your
|
||||
* 2. Provide kinetis_spi0/1/2select() and kinetis_spi0/1/2status() functions in your
|
||||
* board-specific logic. These functions will perform chip selection and
|
||||
* status operations using GPIOs in the way your board is configured.
|
||||
* 3. Add a calls to kinetis_spibus_initialize() in your low level application
|
||||
@@ -95,6 +96,20 @@ void weak_function kinetis_spidev_initialize(void)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI0
|
||||
void kinetis_spi0select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI1
|
||||
void kinetis_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
@@ -123,18 +138,4 @@ uint8_t kinetis_spi2status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KINETIS_SPI3
|
||||
void kinetis_spi3select(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi3status(FAR struct spi_dev_s *dev, enum spi_dev_e devid)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
return SPI_STATUS_PRESENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
#endif /* CONFIG_KINETIS_SPI0 || CONFIG_KINETIS_SPI1 || CONFIG_KINETIS_SPI2 */
|
||||
|
||||
Reference in New Issue
Block a user