查看: 10666|回复: 15

[原创] 逐飞科技LPC55S69_IOT小板评测之IIC,SPI,UART篇

[复制链接]
  • TA的每日心情
    开心
    2020-12-17 09:04
  • 签到天数: 346 天

    连续签到: 1 天

    [LV.8]以坛为家I

    19

    主题

    94

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    1363
    最后登录
    2025-5-7
    发表于 2020-10-18 16:49:14 | 显示全部楼层 |阅读模式
    本帖最后由 一代睡神的崛起 于 2020-10-19 14:05 编辑

    123.jpg   

      之前和日天胸打了个赌,他猜我不会玩LPC55S69了,我辩解了好半天,反正她一副赵日天不服的样子,那就盘他。此次评测的是来自逐飞科技设计IOT小板,看起来还是挺精致的,小编在这里就不过多点评它的外观了,直接进入正题。本次舍弃了逐飞提供的扩展库,用的是官方提供的SDK函数SDK下载,然后根据板子提供的部分信息修改了驱动函数。


    一、系统配置以及串口、延时函数的使能

    sys

    sys

    delay

    delay

    由上图可知这里我们配置了1ms的时钟刷新频率,Core0最大100MHz的工作频率,做些基础的功能完全也能够满足了。然后关于函数修改需要注意这些地方。

    uart

    uart

    Fl

    Fl

    图示可知用的UART7,端口复用模式为1,那么函数修改就需要
    1.     const uint32_t port1_pin29_config = (/* Pin is configured as FC7_RXD_SDA_MOSI_DATA */
    2.                                          IOCON_PIO_FUNC1 |
    3.                                          /* No addition pin function */
    4.                                          IOCON_PIO_MODE_INACT |
    5.                                          /* Standard mode, output slew rate control is enabled */
    6.                                          IOCON_PIO_SLEW_STANDARD |
    7.                                          /* Input function is not inverted */
    8.                                          IOCON_PIO_INV_DI |
    9.                                          /* Enables digital function */
    10.                                          IOCON_PIO_DIGITAL_EN |
    11.                                          /* Open drain is disabled */
    12.                                          IOCON_PIO_OPENDRAIN_DI);
    13.     /* PORT0 PIN29 (coords: 92) is configured as FC7_RXD_SDA_MOSI_DATA */
    14.     IOCON_PinMuxSet(IOCON, 1U, 29U, port1_pin29_config);        
    15.                
    16.                 const uint32_t port1_pin30_config = (/* Pin is configured as FC7_TXD_SCL_MISO_WS */
    17.                                          IOCON_PIO_FUNC1 |
    18.                                          /* No addition pin function */
    19.                                          IOCON_PIO_MODE_INACT |
    20.                                          /* Standard mode, output slew rate control is enabled */
    21.                                          IOCON_PIO_SLEW_STANDARD |
    22.                                          /* Input function is not inverted */
    23.                                          IOCON_PIO_INV_DI |
    24.                                          /* Enables digital function */
    25.                                          IOCON_PIO_DIGITAL_EN |
    26.                                          /* Open drain is disabled */
    27.                                          IOCON_PIO_OPENDRAIN_DI);
    28.     /* PORT0 PIN30 (coords: 94) is configured as FC7_TXD_SCL_MISO_WS */
    29.     IOCON_PinMuxSet(IOCON, 1U, 30U, port1_pin30_config);
    复制代码
    1. #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart
    2. #define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART7
    3. #define BOARD_DEBUG_UART_INSTANCE 7U
    4. #define BOARD_DEBUG_UART_CLK_FREQ 12000000U
    5. #define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM7
    6. #define BOARD_DEBUG_UART_RST kFC7_RST_SHIFT_RSTn
    7. #define BOARD_DEBUG_UART_CLKSRC kCLOCK_Flexcomm7
    8. #define BOARD_UART_IRQ_HANDLER FLEXCOMM7_IRQHandler
    9. #define BOARD_UART_IRQ FLEXCOMM7_IRQn

    10. void BOARD_InitDebugConsole(void)
    11. {
    12.           //SysTick_Config(SystemCoreClock / 1000U);
    13.     /* attach 12 MHz clock to FLEXCOMM7 (debug console) */
    14.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    15.    
    16.     RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST);

    17.     uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ;

    18.     DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq);
    19. }
    复制代码
    最后打印的数据的时间间隔也是比较准确的,下面做了一个测试打印。

    print

    print


    二、IIC函数及其TOF模块VL6180测距
      本次用到的IIC端口为IIC5,对应的I/O脚为PIO1_14(SDA),PIO1_15(SCL)。具体复用端口大家可以去LPC55S69官方数据手册上去查询,这里是功能复用为4.因此复用端口修改:
    1.   const uint32_t port1_pin14_config = (/* Pin is configured as FC0_RXD_SDA_MOSI_DATA */
    2.                                          IOCON_PIO_FUNC4 |
    3.                                          /* No addition pin function */
    4.                                          IOCON_PIO_MODE_PULLUP |
    5.                                          /* Standard mode, output slew rate control is enabled */
    6.                                          IOCON_PIO_SLEW_STANDARD |
    7.                                          /* Input function is not inverted */
    8.                                          IOCON_PIO_INV_DI |
    9.                                          /* Enables digital function */
    10.                                          IOCON_PIO_DIGITAL_EN |
    11.                                          /* Open drain is disabled */
    12.                                          IOCON_PIO_OPENDRAIN_DI);
    13.     /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
    14.     IOCON_PinMuxSet(IOCON, 1U, 14U, port1_pin14_config);        
    15.                
    16.                 const uint32_t port1_pin15_config = (/* Pin is configured as FC0_TXD_SCL_MISO_WS */
    17.                                          IOCON_PIO_FUNC4 |
    18.                                          /* No addition pin function */
    19.                                          IOCON_PIO_MODE_PULLUP |
    20.                                          /* Standard mode, output slew rate control is enabled */
    21.                                          IOCON_PIO_SLEW_STANDARD |
    22.                                          /* Input function is not inverted */
    23.                                          IOCON_PIO_INV_DI |
    24.                                          /* Enables digital function */
    25.                                          IOCON_PIO_DIGITAL_EN |
    26.                                          /* Open drain is disabled */
    27.                                          IOCON_PIO_OPENDRAIN_DI);
    28.     /* PORT0 PIN30 (coords: 94) is configured as FC0_TXD_SCL_MISO_WS */
    29.     IOCON_PinMuxSet(IOCON, 1U, 15U, port1_pin15_config);
    复制代码
    然后初始化函数修改
    1. #define BOARD_TOF_I2C_BASEADDR I2C5
    2. #define TOF_I2C_CLK_FREQ 12000000
    3. #define I2C_BAUDRATE 100000U  //IIC频率

    4. void I2C_Init(void)
    5. {
    6.     /* attach 12 MHz clock to FLEXCOMM5 (I2C master) */
    7.     CLOCK_AttachClk(kFRO12M_to_FLEXCOMM5);

    8.     /* reset FLEXCOMM for I2C */
    9.     RESET_PeripheralReset(kFC5_RST_SHIFT_RSTn);
    10.         
    11.           I2C_MasterGetDefaultConfig(&masterConfig);

    12.     masterConfig.baudRate_Bps = I2C_BAUDRATE;

    13.     I2C_MasterInit(BOARD_TOF_I2C_BASEADDR, &masterConfig, TOF_I2C_CLK_FREQ);
    14.         
    15.           I2C_MasterTransferCreateHandle(BOARD_TOF_I2C_BASEADDR, &g_m_handle, i2c_master_callback, NULL);
    16. }
    复制代码
    关于TOF的初始化就比较长了,初始化是根据用户的需要进行的,仁者见仁智者见智了,这里图片部分给出,如果需要完整初始化可以问日天胸要。测距也是蛮精准的,稍后以一个小视频给出。

    tof

    tof

    measure

    measure


    三、SPI函数及其LSM6DSL六轴输出
      这一章是来吐槽逐飞的。首先请问逐飞你到底是有多怕别人抄你的板,原理图都不放出来,你的FLEXCOMM0-6放出来的I/O脚全都要考用户区猜配置么?你不是知道LPC的引脚可以多引脚复用同一个功能么?说到这里真的是气不打一处来,第一次用一个SPI的OLED屏用FLEXCOMM0来驱动,结果GG了,好吧!我用端口模拟硬件SPI来驱动总行了吧,然后成功将OLED屏驱动起来了,因为答应日天胸把SPI测了的,然后用手里面之前用SPI测过的六轴模块来使用FLEXCOMM3驱动,结果呢猜想端口失败,瞬间想骂人的冲动,这可是我用LPC55S69官方板驱动过的,行吧,保护隐藏属性这块儿我最佩服逐飞。但是呢,不过他怎么怎么的,我做了什么还是要说的。
      首先我用的是FLEXCOMM3,查询数据手册,有两个端口可以复用。这里请问逐飞是哪一个,我猜的P03,也许我这个猜对了,还有两个端口提供我猜么?反正我也懒得去猜了。

    1

    1

    2

    2
      

    1.    const uint32_t port0_pin6_config = (/* Pin is configured as FC3_SCK  */
    2.                                          IOCON_PIO_FUNC1 |
    3.                                          /* No addition pin function */
    4.                                          IOCON_PIO_MODE_PULLUP |
    5.                                          /* Standard mode, output slew rate control is enabled */
    6.                                          IOCON_PIO_SLEW_STANDARD |
    7.                                          /* Input function is not inverted */
    8.                                          IOCON_PIO_INV_DI |
    9.                                          /* Enables digital function */
    10.                                          IOCON_PIO_DIGITAL_EN |
    11.                                          /* Open drain is disabled */
    12.                                          IOCON_PIO_OPENDRAIN_DI);
    13.     /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
    14.     IOCON_PinMuxSet(IOCON, 0U, 6U, port0_pin6_config);        
    15.                
    16.                 const uint32_t port0_pin2_config = (/* Pin is configured as FC3_TXD_SCL_MISO_WS */
    17.                                          IOCON_PIO_FUNC1 |
    18.                                          /* No addition pin function */
    19.                                          IOCON_PIO_MODE_PULLUP |
    20.                                          /* Standard mode, output slew rate control is enabled */
    21.                                          IOCON_PIO_SLEW_STANDARD |
    22.                                          /* Input function is not inverted */
    23.                                          IOCON_PIO_INV_DI |
    24.                                          /* Enables digital function */
    25.                                          IOCON_PIO_DIGITAL_EN |
    26.                                          /* Open drain is disabled */
    27.                                          IOCON_PIO_OPENDRAIN_DI);
    28.     /* PORT0 PIN30 (coords: 94) is configured as FC0_TXD_SCL_MISO_WS */
    29.     IOCON_PinMuxSet(IOCON, 0U, 2U, port0_pin2_config);
    30.                
    31.                 const uint32_t port0_pin3_config = (/* Pin is configured as FC3_RXD_SDA_MOSI_DATA */
    32.                                          IOCON_PIO_FUNC1 |
    33.                                          /* No addition pin function */
    34.                                          IOCON_PIO_MODE_PULLUP |
    35.                                          /* Standard mode, output slew rate control is enabled */
    36.                                          IOCON_PIO_SLEW_STANDARD |
    37.                                          /* Input function is not inverted */
    38.                                          IOCON_PIO_INV_DI |
    39.                                          /* Enables digital function */
    40.                                          IOCON_PIO_DIGITAL_EN |
    41.                                          /* Open drain is disabled */
    42.                                          IOCON_PIO_OPENDRAIN_DI);
    43.     /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
    44.     IOCON_PinMuxSet(IOCON, 0U, 3U, port0_pin3_config);        

    45. #define EXAMPLE_SPI_MASTER SPI3
    46. #define EXAMPLE_SPI_MASTER_IRQ FLEXCOMM3_IRQn
    47. #define EXAMPLE_SPI_MASTER_CLK_SRC kCLOCK_Flexcomm3
    48. #define EXAMPLE_SPI_MASTER_CLK_FREQ CLOCK_GetFlexCommClkFreq(3U)
    49. #define EXAMPLE_SPI_SSEL 1
    50. #define EXAMPLE_SPI_SPOL kSPI_SpolActiveAllLow

    51. void SPI_Init(void)
    52. {
    53.     CLOCK_AttachClk(kFRO12M_to_FLEXCOMM3);
    54.           RESET_PeripheralReset(kFC3_RST_SHIFT_RSTn);
    55.           SPI_MasterGetDefaultConfig(&userConfig);
    56.     userConfig.sselNum = (spi_ssel_t)EXAMPLE_SPI_SSEL;
    57.     userConfig.sselPol = (spi_spol_t)EXAMPLE_SPI_SPOL;
    58.     SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, EXAMPLE_SPI_MASTER_CLK_FREQ);
    59.           SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
    60. }
    复制代码
    由于具体复用端口小编也是迷茫,因此没有得出数据,把之前官方板的数据分享出来给大家。

    3

    3


    四、KEIL环境下载问题及其解决方法
      KEIL5.28-最新版本是不能够用JLink对逐飞板直接下载的,以前官方板是可以的。最可能就是解析文件不正确,小编折腾了一会儿未能解决,后续有好的方法可以给出。然后用J-Flash下载的,这里需要注意的是需要用JLINK-V9版本的,不然可能不支持M33驱动。固件版本尽量选择最新的,小编之前的是6.83也是支持的,但是体验很差。



    123.rar

    4.38 MB, 下载次数: 26

    视频

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-18 12:56
  • 签到天数: 55 天

    连续签到: 1 天

    [LV.5]常住居民I

    114

    主题

    288

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    2031
    最后登录
    2025-8-4
    发表于 2020-10-18 17:20:49 | 显示全部楼层
    玩味大佬牛逼
    签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4692

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10093
    最后登录
    2025-8-8
    发表于 2020-10-19 10:35:05 | 显示全部楼层
    我看逐飞的淘宝铺上有说明:购买后需要单独联系商家才会提供包括原理图在内的其它资料。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-17 09:04
  • 签到天数: 346 天

    连续签到: 1 天

    [LV.8]以坛为家I

    19

    主题

    94

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    1363
    最后登录
    2025-5-7
     楼主| 发表于 2020-10-19 10:45:22 | 显示全部楼层
    jobszheng5 发表于 2020-10-19 10:35
    我看逐飞的淘宝铺上有说明:购买后需要单独联系商家才会提供包括原理图在内的其它资料。
    ...

    但是他的复用端口你根本玩不了,就是一个摆设
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-11-4 13:30
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    176

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    424
    最后登录
    2025-7-16
    发表于 2020-10-19 12:18:59 | 显示全部楼层
    目前逐飞的学习资料和原理图都是购买用户可享的,对于首批试用的大神只能说一句抱歉哈~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-11-4 13:30
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    176

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    424
    最后登录
    2025-7-16
    发表于 2020-10-19 12:36:09 | 显示全部楼层
    关于Keil环境下的问题:

    逐飞官方测试中,Jlink是V9.7,驱动为V6.62,使用的MDK版本5.28,是可以正常下载的。你这边的问题可能就是需要更新芯片器件支持包为最新的12.3.0
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-11-4 13:30
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    176

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    424
    最后登录
    2025-7-16
    发表于 2020-10-19 12:37:17 | 显示全部楼层
    之前的官方板子,芯片的版本也较老,所以MDK也就用的是对应的老版本,这次逐飞开发板上需要试用新的pack,你可以试一下
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-11-4 13:30
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    176

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    424
    最后登录
    2025-7-16
    发表于 2020-10-19 12:37:32 | 显示全部楼层
    使用Jlink下载需要注意将Jlink的接口转换为逐飞使用的SWD或者自行使用杜邦线连接下载口
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-17 09:04
  • 签到天数: 346 天

    连续签到: 1 天

    [LV.8]以坛为家I

    19

    主题

    94

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    1363
    最后登录
    2025-5-7
     楼主| 发表于 2020-10-20 10:05:29 | 显示全部楼层
    leo01 发表于 2020-10-19 12:36
    关于Keil环境下的问题:

    逐飞官方测试中,Jlink是V9.7,驱动为V6.62,使用的MDK版本5.28,是可以正常下载 ...

    好的,感谢!
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-11-4 13:30
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    176

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    424
    最后登录
    2025-7-16
    发表于 2020-10-20 12:56:29 | 显示全部楼层

    这个问题我们恩智浦的工程师也碰到了,已经让逐飞那边在他们的学习资料中进行说明
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-18 10:09 , Processed in 0.106918 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表