打印
[学习资料]

microchip 代理贝能的sam d51(LQFP100PIN)与LAN9253 电机控制开发板使用总结

[复制链接]
973|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鱿鱼丝|  楼主 | 2023-10-27 15:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

microchip 代理贝能的sam d51(LQFP100PIN)与LAN9253 电机控制开发板使用总结(3)

3.4 板子相关外设配置3.4.1 板子MCU硬件 的LAN9253连接接口


使用特权

评论回复
沙发
鱿鱼丝|  楼主 | 2023-10-27 15:27 | 只看该作者
3.4.2 MCU TCC–PWM 电机控制

使用特权

评论回复
板凳
鱿鱼丝|  楼主 | 2023-10-27 15:27 | 只看该作者
PIN40–PC10–PWM0H

PIN41–PC11–PWM0L

PIN42–PC12–PWM1H

PIN43–PC13–PWM1L

PIN44–PC14–PWM2H

PIN45–PC15–PWM2L

使用特权

评论回复
地板
鱿鱼丝|  楼主 | 2023-10-27 15:28 | 只看该作者
Timer/Counter for Control applications (TCC) peripheral

使用特权

评论回复
5
鱿鱼丝|  楼主 | 2023-10-27 15:28 | 只看该作者
3.4.2.1 应用调用例子
        /* Register callback function for period event */
    TCC0_PWMCallbackRegister(TCC_PeriodEventHandler, (uintptr_t)NULL);
   
    /* Read the period */
    period = TCC0_PWM24bitPeriodGet();
   
    /* Start PWM*/
    TCC0_PWMStart();

使用特权

评论回复
6
鱿鱼丝|  楼主 | 2023-10-27 15:34 | 只看该作者
/***************************************
* Check PWM outputs on pins
* Channel 0 PWMH - PC04
* Channel 0 PWML - PD11
* Channel 1 PWMH - PD08
* Channel 1 PWML - PB17
* Channel 2 PWMH - PB14
* Channel 2 PWML - PC22
***************************************/

/* Duty cycle increment value */
#define DUTY_INCREMENT (10U)

/* Save PWM period */
uint32_t period;

/* This function is called after TCC period event */
void TCC_PeriodEventHandler(uint32_t status, uintptr_t context)

使用特权

评论回复
7
鱿鱼丝|  楼主 | 2023-10-27 15:38 | 只看该作者

使用特权

评论回复
8
鱿鱼丝|  楼主 | 2023-10-27 15:39 | 只看该作者
3.4.3 MCU ADC–IA/IB/IC

15 PB08 IA

16 PB09 IB

97 PB00 IC

使用特权

评论回复
9
鱿鱼丝|  楼主 | 2023-10-27 15:39 | 只看该作者
3.4.4 MCU GPIO–网卡指示灯
74 PA24 RJLED2

75 PA25 RJLED1

使用特权

评论回复
10
鱿鱼丝|  楼主 | 2023-10-27 15:39 | 只看该作者
3.4.4.1 应用调用例子

/*** Macros for LED pin ***/
#define RJLED2_Set()               (PORT_REGS->GROUP[0].PORT_OUTSET = ((uint32_t)1U << 24U))
#define RJLED2_Clear()             (PORT_REGS->GROUP[0].PORT_OUTCLR = ((uint32_t)1U << 24U))
#define RJLED2_Toggle()            (PORT_REGS->GROUP[0].PORT_OUTTGL = ((uint32_t)1U << 24U))
#define RJLED2_OutputEnable()      (PORT_REGS->GROUP[0].PORT_DIRSET = ((uint32_t)1U << 24U))
#define RJLED2_InputEnable()       (PORT_REGS->GROUP[0].PORT_DIRCLR = ((uint32_t)1U << 24U))
#define RJLED2_Get()               (((PORT_REGS->GROUP[0].PORT_IN >> 24U)) & 0x01U)
#define RJLED2_PIN                  PORT_PIN_PA24

#define RJLED1Set()               (PORT_REGS->GROUP[0].PORT_OUTSET = ((uint32_t)1U << 25U))
#define RJLED1_Clear()             (PORT_REGS->GROUP[0].PORT_OUTCLR = ((uint32_t)1U << 25U))
#define RJLED1_Toggle()            (PORT_REGS->GROUP[0].PORT_OUTTGL = ((uint32_t)1U << 25U))
#define RJLED1_OutputEnable()      (PORT_REGS->GROUP[0].PORT_DIRSET = ((uint32_t)1U << 25U))
#define RJLED1_InputEnable()       (PORT_REGS->GROUP[0].PORT_DIRCLR = ((uint32_t)1U << 25U))
#define RJLED1_Get()               (((PORT_REGS->GROUP[0].PORT_IN >> 25U)) & 0x01U)
#define RJLED1_PIN                  PORT_PIN_PA25

使用特权

评论回复
11
鱿鱼丝|  楼主 | 2023-10-27 15:43 | 只看该作者
3.4.5 MCU EIC–KEY S1
按键中断

69 PB21 KEY1

默认1,按下按键0

使用特权

评论回复
12
鱿鱼丝|  楼主 | 2023-10-27 15:43 | 只看该作者
3.4.5.1 应用调用例子
   EIC_CallbackRegister(EIC_PIN_5,EIC_User_Handler, 0);

static void EIC_User_Handler(uintptr_t context)
{
//    LED_Toggle();
    SERCOM0_USART_Write("EIC is ok!", sizeof"EIC is ok!");
}

使用特权

评论回复
13
鱿鱼丝|  楼主 | 2023-10-27 15:44 | 只看该作者
3.4.5.2 板子没有复位按键,使用另外按键进行复位
static void EIC_User_Handler(uintptr_t context)
{
//    LED_Toggle();
    SERCOM0_USART_Write("EIC is ok!", sizeof"EIC is ok!");
    NVIC_SystemReset();
}

使用特权

评论回复
14
鱿鱼丝|  楼主 | 2023-10-27 15:44 | 只看该作者
3.4.6 MCU key EIC -->evsys–>led tog
按键按下EIC中断,在中断处理函数中进行控制LED TOG.

那么是否有更好或者其他的方式呢?

按键按下,EIC输出到ev sys,ev sys直接进行控制LED TOG,不需要CPU参与。

当然也可以实现按键按下,产生EIC中断输出,在中断处理函数中进行控制LED TOG.

也同时可以EIC事件输出,ev sys直接进行控制LED TOG,不需要CPU参与。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

473

帖子

2

粉丝