SAM3/4 SPI phase control (CPHA) is inverted
This commit is contained in:
parent
2d6a50a1ce
commit
7e372171c2
@ -547,7 +547,15 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode)
|
|||||||
if (mode != priv->mode)
|
if (mode != priv->mode)
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
/* Yes... Set the mode appropriately */
|
/* Yes... Set the mode appropriately:
|
||||||
|
*
|
||||||
|
* SPI CPOL NCPHA
|
||||||
|
* MODE
|
||||||
|
* 0 0 1
|
||||||
|
* 1 0 0
|
||||||
|
* 2 1 1
|
||||||
|
* 3 1 0
|
||||||
|
*/
|
||||||
|
|
||||||
regaddr = g_csraddr[priv->cs];
|
regaddr = g_csraddr[priv->cs];
|
||||||
regval = getreg32(regaddr);
|
regval = getreg32(regaddr);
|
||||||
@ -555,19 +563,19 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode)
|
|||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case SPIDEV_MODE0: /* CPOL=0; NCPHA=0 */
|
case SPIDEV_MODE0: /* CPOL=0; NCPHA=1 */
|
||||||
|
regval |= SPI_CSR_NCPHA;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPIDEV_MODE1: /* CPOL=0; NCPHA=1 */
|
case SPIDEV_MODE1: /* CPOL=0; NCPHA=0 */
|
||||||
regval |= SPI_CSR_NCPHA;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPIDEV_MODE2: /* CPOL=1; NCPHA=0 */
|
case SPIDEV_MODE2: /* CPOL=1; NCPHA=1 */
|
||||||
regval |= SPI_CSR_CPOL;
|
regval |= (SPI_CSR_CPOL | SPI_CSR_NCPHA);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPIDEV_MODE3: /* CPOL=1; NCPHA=1 */
|
case SPIDEV_MODE3: /* CPOL=1; NCPHA=0 */
|
||||||
regval |= (SPI_CSR_CPOL|SPI_CSR_NCPHA);
|
regval |= SPI_CSR_CPOL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user