[技术相关] SWM190芯片SPI设置

[复制链接]
530|1
 楼主| 星辰大海不退缩 发表于 2023-8-23 13:00 | 显示全部楼层 |阅读模式
  1. #include "SWM190.h"

  2. void SerialInit(void);

  3. int main(void)
  4. {       
  5.         uint32_t i;
  6.         uint32_t rxdata, txdata = 0x23;
  7.         SPI_InitStructure SPI_initStruct;
  8.        
  9.         SystemInit();
  10.        
  11.         SerialInit();
  12.        
  13.         PORT_Init(PORTA, PIN8,  PORTA_PIN8_SPI0_SSEL,  0);
  14.         PORT_Init(PORTA, PIN11, PORTA_PIN11_SPI0_SCLK, 0);
  15.         PORT_Init(PORTA, PIN10, PORTA_PIN10_SPI0_MOSI, 0);
  16.         PORT_Init(PORTA, PIN9,  PORTA_PIN9_SPI0_MISO,  1);
  17.        
  18.         SPI_initStruct.clkDiv = SPI_CLKDIV_32;
  19.         SPI_initStruct.FrameFormat = SPI_FORMAT_SPI;
  20.         SPI_initStruct.SampleEdge = SPI_SECOND_EDGE;
  21.         SPI_initStruct.IdleLevel = SPI_LOW_LEVEL;
  22.         SPI_initStruct.WordSize = 8;
  23.         SPI_initStruct.Master = 1;
  24.         SPI_initStruct.RXThreshold = 0;
  25.         SPI_initStruct.RXThresholdIEn = 0;
  26.         SPI_initStruct.TXThreshold = 0;
  27.         SPI_initStruct.TXThresholdIEn = 0;
  28.         SPI_initStruct.TXCompleteIEn  = 0;
  29.         SPI_Init(SPI0, &SPI_initStruct);
  30.         SPI_Open(SPI0);
  31.        
  32.         while(1==1)
  33.         {
  34.                 rxdata = SPI_ReadWrite(SPI0, txdata);
  35.                 txdata = rxdata + 1;                //将SPI0_MOSI与SPI0_MISO短接,则可看到打印数值加一递增
  36.                
  37.                 printf("rxdata: 0x%X\r\n", rxdata);
  38.                
  39.                 for(i = 0; i < SystemCoreClock/10; i++);
  40.         }
  41. }

  42. void SerialInit(void)
  43. {
  44.         UART_InitStructure UART_initStruct;
  45.        
  46.         PORT_Init(PORTA, PIN1, PORTA_PIN1_UART0_TX, 0);                //GPIOA.1配置为UART0 TXD
  47.         PORT_Init(PORTA, PIN0, PORTA_PIN0_UART0_RX, 1);                //GPIOA.0配置为UART0 RXD
  48.        
  49.         UART_initStruct.Baudrate = 57600;
  50.         UART_initStruct.DataBits = UART_DATA_8BIT;
  51.         UART_initStruct.Parity = UART_PARITY_NONE;
  52.         UART_initStruct.StopBits = UART_STOP_1BIT;
  53.         UART_initStruct.RXThresholdIEn = 0;
  54.         UART_initStruct.TXThresholdIEn = 0;
  55.         UART_initStruct.TimeoutIEn = 0;
  56.         UART_Init(UART0, &UART_initStruct);
  57.         UART_Open(UART0);
  58. }

  59. /******************************************************************************************************************************************
  60. * 函数名称: fputc()
  61. * 功能说明: printf()使用此函数完成实际的串口打印动作
  62. * 输    入: int ch                要打印的字符
  63. *                        FILE *f                文件句柄
  64. * 输    出: 无
  65. * 注意事项: 无
  66. ******************************************************************************************************************************************/
  67. int fputc(int ch, FILE *f)
  68. {
  69.         UART_WriteByte(UART0, ch);
  70.        
  71.         while(UART_IsTXBusy(UART0));
  72.        
  73.         return ch;
  74. }


ousj 发表于 2023-8-27 11:20 | 显示全部楼层
从哪摘录的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

302

主题

2831

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部