在线时间185 小时
UID3375312
注册时间2017-6-28
NXP金币12
TA的每日心情 | 开心 2020-12-17 09:04 |
---|
签到天数: 346 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 1363
- 最后登录
- 2025-5-7
|
本帖最后由 一代睡神的崛起 于 2020-10-19 14:05 编辑
之前和日天胸打了个赌,他猜我不会玩LPC55S69了,我辩解了好半天,反正她一副赵日天不服的样子,那就盘他。此次评测的是来自逐飞科技设计IOT小板,看起来还是挺精致的,小编在这里就不过多点评它的外观了,直接进入正题。本次舍弃了逐飞提供的扩展库,用的是官方提供的SDK函数SDK下载,然后根据板子提供的部分信息修改了驱动函数。
一、系统配置以及串口、延时函数的使能
sys
delay
由上图可知这里我们配置了1ms的时钟刷新频率,Core0最大100MHz的工作频率,做些基础的功能完全也能够满足了。然后关于函数修改需要注意这些地方。
uart
Fl
图示可知用的UART7,端口复用模式为1,那么函数修改就需要
- const uint32_t port1_pin29_config = (/* Pin is configured as FC7_RXD_SDA_MOSI_DATA */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_INACT |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN29 (coords: 92) is configured as FC7_RXD_SDA_MOSI_DATA */
- IOCON_PinMuxSet(IOCON, 1U, 29U, port1_pin29_config);
-
- const uint32_t port1_pin30_config = (/* Pin is configured as FC7_TXD_SCL_MISO_WS */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_INACT |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN30 (coords: 94) is configured as FC7_TXD_SCL_MISO_WS */
- IOCON_PinMuxSet(IOCON, 1U, 30U, port1_pin30_config);
复制代码- #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart
- #define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART7
- #define BOARD_DEBUG_UART_INSTANCE 7U
- #define BOARD_DEBUG_UART_CLK_FREQ 12000000U
- #define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM7
- #define BOARD_DEBUG_UART_RST kFC7_RST_SHIFT_RSTn
- #define BOARD_DEBUG_UART_CLKSRC kCLOCK_Flexcomm7
- #define BOARD_UART_IRQ_HANDLER FLEXCOMM7_IRQHandler
- #define BOARD_UART_IRQ FLEXCOMM7_IRQn
- void BOARD_InitDebugConsole(void)
- {
- //SysTick_Config(SystemCoreClock / 1000U);
- /* attach 12 MHz clock to FLEXCOMM7 (debug console) */
- CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
-
- RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST);
- uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ;
- DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq);
- }
复制代码 最后打印的数据的时间间隔也是比较准确的,下面做了一个测试打印。
print
二、IIC函数及其TOF模块VL6180测距
本次用到的IIC端口为IIC5,对应的I/O脚为PIO1_14(SDA),PIO1_15(SCL)。具体复用端口大家可以去LPC55S69官方数据手册上去查询,这里是功能复用为4.因此复用端口修改:
- const uint32_t port1_pin14_config = (/* Pin is configured as FC0_RXD_SDA_MOSI_DATA */
- IOCON_PIO_FUNC4 |
- /* No addition pin function */
- IOCON_PIO_MODE_PULLUP |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
- IOCON_PinMuxSet(IOCON, 1U, 14U, port1_pin14_config);
-
- const uint32_t port1_pin15_config = (/* Pin is configured as FC0_TXD_SCL_MISO_WS */
- IOCON_PIO_FUNC4 |
- /* No addition pin function */
- IOCON_PIO_MODE_PULLUP |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN30 (coords: 94) is configured as FC0_TXD_SCL_MISO_WS */
- IOCON_PinMuxSet(IOCON, 1U, 15U, port1_pin15_config);
复制代码 然后初始化函数修改- #define BOARD_TOF_I2C_BASEADDR I2C5
- #define TOF_I2C_CLK_FREQ 12000000
- #define I2C_BAUDRATE 100000U //IIC频率
- void I2C_Init(void)
- {
- /* attach 12 MHz clock to FLEXCOMM5 (I2C master) */
- CLOCK_AttachClk(kFRO12M_to_FLEXCOMM5);
- /* reset FLEXCOMM for I2C */
- RESET_PeripheralReset(kFC5_RST_SHIFT_RSTn);
-
- I2C_MasterGetDefaultConfig(&masterConfig);
- masterConfig.baudRate_Bps = I2C_BAUDRATE;
- I2C_MasterInit(BOARD_TOF_I2C_BASEADDR, &masterConfig, TOF_I2C_CLK_FREQ);
-
- I2C_MasterTransferCreateHandle(BOARD_TOF_I2C_BASEADDR, &g_m_handle, i2c_master_callback, NULL);
- }
复制代码 关于TOF的初始化就比较长了,初始化是根据用户的需要进行的,仁者见仁智者见智了,这里图片部分给出,如果需要完整初始化可以问日天胸要。测距也是蛮精准的,稍后以一个小视频给出。
tof
measure
三、SPI函数及其LSM6DSL六轴输出
这一章是来吐槽逐飞的。首先请问逐飞你到底是有多怕别人抄你的板,原理图都不放出来,你的FLEXCOMM0-6放出来的I/O脚全都要考用户区猜配置么?你不是知道LPC的引脚可以多引脚复用同一个功能么?说到这里真的是气不打一处来,第一次用一个SPI的OLED屏用FLEXCOMM0来驱动,结果GG了,好吧!我用端口模拟硬件SPI来驱动总行了吧,然后成功将OLED屏驱动起来了,因为答应日天胸把SPI测了的,然后用手里面之前用SPI测过的六轴模块来使用FLEXCOMM3驱动,结果呢猜想端口失败,瞬间想骂人的冲动,这可是我用LPC55S69官方板驱动过的,行吧,保护隐藏属性这块儿我最佩服逐飞。但是呢,不过他怎么怎么的,我做了什么还是要说的。
首先我用的是FLEXCOMM3,查询数据手册,有两个端口可以复用。这里请问逐飞是哪一个,我猜的P03,也许我这个猜对了,还有两个端口提供我猜么?反正我也懒得去猜了。
1
2
- const uint32_t port0_pin6_config = (/* Pin is configured as FC3_SCK */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_PULLUP |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
- IOCON_PinMuxSet(IOCON, 0U, 6U, port0_pin6_config);
-
- const uint32_t port0_pin2_config = (/* Pin is configured as FC3_TXD_SCL_MISO_WS */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_PULLUP |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN30 (coords: 94) is configured as FC0_TXD_SCL_MISO_WS */
- IOCON_PinMuxSet(IOCON, 0U, 2U, port0_pin2_config);
-
- const uint32_t port0_pin3_config = (/* Pin is configured as FC3_RXD_SDA_MOSI_DATA */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_PULLUP |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT1 PIN14 (coords: 92) is configured as FC0_RXD_SDA_MOSI_DATA */
- IOCON_PinMuxSet(IOCON, 0U, 3U, port0_pin3_config);
- #define EXAMPLE_SPI_MASTER SPI3
- #define EXAMPLE_SPI_MASTER_IRQ FLEXCOMM3_IRQn
- #define EXAMPLE_SPI_MASTER_CLK_SRC kCLOCK_Flexcomm3
- #define EXAMPLE_SPI_MASTER_CLK_FREQ CLOCK_GetFlexCommClkFreq(3U)
- #define EXAMPLE_SPI_SSEL 1
- #define EXAMPLE_SPI_SPOL kSPI_SpolActiveAllLow
- void SPI_Init(void)
- {
- CLOCK_AttachClk(kFRO12M_to_FLEXCOMM3);
- RESET_PeripheralReset(kFC3_RST_SHIFT_RSTn);
- SPI_MasterGetDefaultConfig(&userConfig);
- userConfig.sselNum = (spi_ssel_t)EXAMPLE_SPI_SSEL;
- userConfig.sselPol = (spi_spol_t)EXAMPLE_SPI_SPOL;
- SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, EXAMPLE_SPI_MASTER_CLK_FREQ);
- SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
- }
复制代码 由于具体复用端口小编也是迷茫,因此没有得出数据,把之前官方板的数据分享出来给大家。
3
四、KEIL环境下载问题及其解决方法
KEIL5.28-最新版本是不能够用JLink对逐飞板直接下载的,以前官方板是可以的。最可能就是解析文件不正确,小编折腾了一会儿未能解决,后续有好的方法可以给出。然后用J-Flash下载的,这里需要注意的是需要用JLINK-V9版本的,不然可能不支持M33驱动。固件版本尽量选择最新的,小编之前的是6.83也是支持的,但是体验很差。
|
|