[国产单片机]

PT32Y003

[复制链接]
1458|14
手机看帖
扫描二维码
随时随地手机跟帖
rickluo|  楼主 | 2024-3-20 17:52 | 显示全部楼层 |阅读模式
产品介绍:
PT32Y003x 系列使用高性能低功耗的 Cortex™-M0 32位内核,最高工作频率可达48MHz,支持1.8V至5.5V工作电压及-40℃至+85℃的温度范围。内置多达16K 字节的MTP存储器、2K字节的SRAM和128字节EEPROM。集成多功能复用的I/O端口及丰富的外设功能:包含1个多达12通道的12位ADC,1个高级定时器,2个基本16位定时器和1个低功耗定时器。还集成1路SPI接口,1路I2C接口和2路UART 接口。支持两种低功耗模式。

主要特色:
超高性价比,低功耗(典型深度休眠待机功耗为3uA),主频最高到48MHz,强大的安全与保密性能,多种封装外型支持,全套开发板,代码示例支持, ESD(HBM):8KV,EFT: 4KV。

主要应用:
PT32Y003x系列产品适用于多种应用场合:
- 工业应用:
  • 电机控制、医疗保健、小家电及电动工具
  • 住宅、楼宇和城市自动化、变频器、打印机等等
- 消费类电子产品:
  • 可穿戴设备、智能家居
  • 充电器、无线充、锂电池充电、仪表显示
  • 游戏外设、四轴飞行器、无线耳机
  • 玩具及干电池类快消品等市场
[size=18.6667px]

[size=18.6667px]SDK请参考! V1.6版本 ,如有新版本会陆续更新
PAI-IC.PT32Y003_DFP.1.6.0(1).zip (3.25 MB)

使用特权

评论回复

相关帖子

rickluo|  楼主 | 2024-3-21 11:03 | 显示全部楼层
#技术资源# ADC 代码分享

/******************************************************************************
  * @file    PT32Y003x_adc.c
  * @author  应用开发团队
  * @version V1.0.0
  * @date    2022/9/1
  * @brief   This file provides firmware functions to manage the following
  *          functionalities of the ADC peripheral:
  *           + Initialization and Configuration
  *           + Interrupts and flags management
  *         
  ******************************************************************************
  * @attention
  *
  *
  *****************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "PT32Y003x_adc.h"


/** @defgroup ADC
  * @brief ADC driver modules
  * @{
  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define Init_CR1_MASK        (u32)0xFFC0F481
#define Init_CR2_MASK        (u32)0xFF00FFFF
#define SetSampleTime_CR2_MASK   (u32)0xFFFF00FF

/***********************
**1.   把AGENT_H 定义成静态变量(是除以1000之后的值 最后直接相加即可 )
*******************/
static s16 AGENT_H_stc_div1000=0;
static uint8_t          AGENT_ID_stc_ENABLE=0;                                /**为0未设置,为1已设置,后面要用**/

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/**
  * @brief  Initializes the ADCx peripheral according to the specified parameters
  *         in the ADC_InitStruct.
  * @NOTE   This function is used to configure the global features of the ADC (
  *         Resolution, Data Alignment, continuous mode activation, External
  *         trigger source and edge, Sequence Scan Direction).
  * @param  ADCx: where x can be 1 to select the ADC peripheral.
  * @param  ADC_InitStruct: pointer to an ADC_InitTypeDef structure that contains
  *         the configuration information for the specified ADC peripheral.
  * @retval None
  */
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct)
{
        u32 tmpreg = 0;
        /* Check the parameters */
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_ADC_Mode(ADC_InitStruct->ADC_Mode));
  assert_param(IS_ADC_TriggerSource(ADC_InitStruct->ADC_TriggerSource));
        assert_param(IS_ADC_TimerTriggerSource(ADC_InitStruct->ADC_TimerTriggerSource));
        assert_param(IS_ADC_Align(ADC_InitStruct->ADC_Align));
        assert_param(IS_ADC_Channel(ADC_InitStruct->ADC_Channel));
        assert_param(IS_ADC_BGVoltage(ADC_InitStruct->ADC_BGVoltage));
        assert_param(IS_ADC_ReferencePositive(ADC_InitStruct->ADC_ReferencePositive));  

        tmpreg = ADCx->CR1;
        tmpreg &= Init_CR1_MASK;
        tmpreg  |= ((ADC_InitStruct->ADC_Mode) |\
                           (ADC_InitStruct->ADC_TriggerSource)|\
                (ADC_InitStruct->ADC_TimerTriggerSource)|\
                (ADC_InitStruct->ADC_Align)|\
                (ADC_InitStruct->ADC_Channel)|\
                (ADC_InitStruct->ADC_BGVoltage)|\
                (ADC_InitStruct->ADC_ReferencePositive));
        ADCx->CR1 = tmpreg;

    tmpreg = ADCx->CR2;
        tmpreg &= Init_CR2_MASK;
    tmpreg |= ((ADC_InitStruct->ADC_Prescaler)<<16);
    ADCx->CR2 = tmpreg;
                if(ADC_InitStruct->ADC_ReferencePositive== ADC_ReferencePositive_BG2v0)
                {
                        /*启动 BG2V0  如果使用这个基准,一定要开启BG2v0 */
                        ADCx->BGCR |=ADC_BGCR_BGE;       
                }       
                /*******************************/
                /************************
                **2。 在必经之路上,设置
                *************************/
                u32 AGENT_ID;         
                AGENT_ID=(*((u32 volatile*)(0x4001F02C)));
                if(AGENT_ID !=0xFFFFFFFF)
                {
                        AGENT_ID<<=3;
                        AGENT_H_stc_div1000  =(s32)AGENT_ID>>19;
                        AGENT_H_stc_div1000  <<=1;
                        AGENT_H_stc_div1000 /=1000;
                        AGENT_ID_stc_ENABLE =1;
                }
                else
                {
                        AGENT_H_stc_div1000=0;
                        AGENT_ID_stc_ENABLE =0;               
                }
               
}
/***************************************************************/
void ADC_BG2V0_Enable(ADC_TypeDef* ADCx)
{
        ADCx->BGCR |=ADC_BGCR_BGE;
}
/**
  * @brief  Fills each ADC_InitStruct member with its default value.
  * @note   This function is used to initialize the global features of the ADC (
  *         Resolution, Data Alignment, continuous mode activation, External
  *         trigger source and edge, Sequence Scan Direction).
  * @param  ADC_InitStruct: pointer to an ADC_InitTypeDef structure which will
  *         be initialized.
  * @retval None
  */
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)
{
        ADC_InitStruct->ADC_Prescaler = 2;                                                         //ADC二分频,8/2=4 MHz
        ADC_InitStruct->ADC_Mode = ADC_Mode_Single;                                                //单次转换模式
    ADC_InitStruct->ADC_TriggerSource = ADC_TriggerSource_Software;
        ADC_InitStruct->ADC_TimerTriggerSource=ADC_TimerTriggerSource_TIM1ADC;                                                //定时源触发选择TIM0事件
        ADC_InitStruct->ADC_Align = ADC_Align_Right;                                        //右对齐
        ADC_InitStruct->ADC_Channel=ADC_Channel_0;                                                //通道0,PC13
        ADC_InitStruct->ADC_ReferencePositive= ADC_ReferencePositive_VDD;        //选择VDDA作为正端参考电平
        ADC_InitStruct->ADC_BGVoltage=ADC_BGVoltage_BG1v2;
}

/**
  * @brief  Enables or disables the specified ADC peripheral.
  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
  * @param  NewState: new state of the ADCx peripheral.
  *          This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
        /* Check the parameters */
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_FUNCTIONAL_STATE(NewState));
        if (NewState != DISABLE)
        {
                /* Set the ADEN bit to Enable the ADC peripheral */
                ADCx->CR1 |= ADC_CR1_EN;
        }
        else
        {
                /* Reset the ADEN to Disable the ADC peripheral */
                ADCx->CR1 &= ~ADC_CR1_EN;
        }
}



/**
  * @brief  Configures for the selected ADC and its sampling time.
  * @param  ADCx: where x can be 1 to select the ADC peripheral.
  * @param  ADC_Channel: the ADC channel to configure.
  *          This parameter can be any combination of the following values:
  *            @ARG ADC_Channel_0: ADC Channel0 selected
  *            @arg ADC_Channel_1: ADC Channel1 selected
  *            @arg ADC_Channel_2: ADC Channel2 selected
  *            @arg ADC_Channel_3: ADC Channel3 selected
  *            @arg ADC_Channel_4: ADC Channel4 selected
  *            @arg ADC_Channel_5: ADC Channel5 selected
  *            @arg ADC_Channel_6: ADC Channel6 selected
  *            @arg ADC_Channel_7: ADC Channel7 selected
  *            @arg ADC_Channel_8: ADC Channel8 selected
  *            @arg ADC_Channel_9:
  *            @arg ADC_Channel_10:
  *            @arg ADC_Channel_11:
  * @retval None
  */
void ADC_ChannelConfig(ADC_TypeDef* ADCx, u32 ADC_Channel)
{
        u32 tmpreg=0;
        /* Check the parameters */
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_ADC_Channel(ADC_Channel));       
        tmpreg = ADCx->CR1;
        tmpreg &= ~ADC_CR1_CHS;
        tmpreg |= ADC_Channel;
        ADCx->CR1 = tmpreg;
}

void ADC_StartOfConversion(ADC_TypeDef* ADCx)
{
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    ADCx->CR1 |= ADC_CR1_SOC;
}
/*************************/
u16 ADC_DataCalculator1_6_0(ADC_TypeDef* ADCx, u16 data)
{
        //s16 AGENT_H;
        //u32 AGENT_ID;
        s16 tmp;
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        //AGENT_ID=(*((u32 volatile*)(0x4001F02C)));

        if(0== AGENT_ID_stc_ENABLE )
        {
                if(((ADCx->CR1) &0x8000000) == 0x0)
                {
                        if((ADCx->CR1&ADC_CR1_ALIGN)==ADC_CR1_ALIGN)
                        {
        return data>>1;
                        }
                        else
                        {
                                return data<<1;
                        }
                }
                else
                {
                        return data;
                }
        }               
        else
        {
                if(((ADCx->CR1) &0x8000000) == 0x8000000)
                {
//                        AGENT_ID<<=3;
//                        AGENT_H=(s32)AGENT_ID>>19;
//                        AGENT_H<<=1;
                        if((data &0x2000)==0x2000)
                        {
//                                data=ADCx->DR;
                                data=data^0x3FFF;
                                data=data+1;
                        }
                       
                        if((ADCx->CR1&ADC_CR1_ALIGN) == 0)
                        {
                                data <<= 2;
                        }
                        tmp = (s16)data;
                        tmp >>= 2;
                        tmp = tmp + AGENT_H_stc_div1000 ;                                /** 这个值已经算好了,直接使用 **/
                        tmp &=  0xFFFE;
                        if(tmp > 8191)
                        {
                                tmp = 8191;
                        }
                        else if(tmp < -8191)
                        {
                                tmp = -8191;
                        }
                        if((ADCx->CR1&ADC_CR1_ALIGN)==ADC_CR1_ALIGN)
                        {
                                tmp <<= 2;
                        }
                        return (u16)tmp;
                }
                else
                {
                        return data<<1;
                }
        }
}


/**
  * @brief  Returns the last ADCx conversion result data for ADC channel.
  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
  * @retval The Data conversion value.
  */
/**
  * @brief  Returns the last ADCx conversion result data for ADC channel.
  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
  * @retval The Data conversion value.
  */


u16 ADC_GetConversionValue(ADC_TypeDef* ADCx)
{
        /* Check the parameters */
        u16 data;
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        /* Return the selected ADC conversion value */
        data=ADCx->DR;
  data=ADC_DataCalculator1_6_0(ADCx,data);
        return data;       
       
//        int data;
//        u16 AGENT_H,AGENT_L;
//        u32 AGENT_ID;
//        assert_param(IS_ADC_ALL_PERIPH(ADCx));
//        /* Return the selected ADC conversion value */
//        AGENT_ID=(*((u32 volatile*)(0x4001F02C)));
//        if(( ((u32)(ADCx->CR1)) &0x8000000 ) == 0x8000000)
//        {
//                if((ADCx->DR&0x2000)==0x2000)
//                {
//                        data=ADCx->DR;
//                        data=data^0x3FFF;
//                        data=data+1;
//                }
//                else
//                {
//                        data=ADCx->DR;
//                }
//                /**************************************/
////                if(AGENT_ID<0xFFFFFFFF)
////                {
////                        AGENT_H=AGENT_ID>>16;
////                        AGENT_L=(u16)(AGENT_ID&0x0000FFFF);
////                        data=(data)*AGENT_L/10000+AGENT_H/1000;               
////                }               
//                data=data>>1;
//                if(data>4095)
//                {
//                        data=4095;
//                }
//                //data =ADC_DataCalculator(ADCx ,data );
//                return data;
//        }
//        else
//        {
//                return ADCx->DR;
//        }
}

void ADC_ITConfig(ADC_TypeDef* ADCx, u32 ADC_IT, FunctionalState NewState)
{
    /* Check the parameters */
                assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_FUNCTIONAL_STATE(NewState));
    assert_param(IS_ADC_IT(ADC_IT));

    if (NewState != DISABLE)
    {
        /* Enable the selected ADC interrupts */
        ADCx->CR1 |= ADC_IT;
    }
    else
    {
        /* Disable the selected ADC interrupts */
        ADCx->CR1 &= (~ADC_IT);
    }
}

/**
  * @brief  Checks whether the specified ADC flag is set or not.
  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
  * @param  ADC_FLAG: specifies the flag to check.
  *          This parameter can be one of the following values:
  *            @arg ADC_FLAG_EOC: End of conversion flag
  *            @arg ADC_FLAG_RDY: ADC Ready flag
  * @retval The new state of ADC_FLAG (SET or RESET).
  */
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, u32 ADC_FLAG)
{
        FlagStatus bitstatus = RESET;
        /* Check the parameters */
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_ADC_FLAG(ADC_FLAG));
        /* Check the status of the specified ADC flag */
        if ((ADCx->SR & ADC_FLAG) != (u32)RESET)
        {
                /* ADC_FLAG is set */
                bitstatus = SET;
        }
        else
        {
                /* ADC_FLAG is reset */
                bitstatus = RESET;
        }
        /* Return the ADC_FLAG status */
        return  bitstatus;
}

/**
  * @brief ADC Average Command
  * @param ADCx:ADC Peripheral
  * @param NewState:FunctionalState type variable
  * @retval None
  */
void ADC_AverageCmd(ADC_TypeDef* ADCx,FunctionalState NewState)
{
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_FUNCTIONAL_STATE(NewState));
    if(NewState!=DISABLE)
    {
        ADCx->CR1 |= ADC_CR1_AVGE;
    }
    else
    {
        ADCx->CR1 &= (~ADC_CR1_AVGE);
    }               
}

/**
  * @brief ADC Average Times Config
  * @param ADCx:ADC Peripheral
  * @param Times: the time of average conversion
        * @arg ADC_AverageTimes_1: Average conversion 1 times                                         
        * @arg ADC_AverageTimes_2: Average conversion 2 times                                                                                 
        * @arg ADC_AverageTimes_4: Average conversion 4 times                                                                                 
        * @arg ADC_AverageTimes_8: Average conversion 8 times                                                                                 
        * @arg ADC_AverageTimes_16: Average conversion 16 times                                                                                 
        * @arg ADC_AverageTimes_32: Average conversion 32 times                                                                                 
        * @arg ADC_AverageTimes_64: Average conversion 64 times                                         
        * @arg ADC_AverageTimes_128: Average conversion 128 times                                          
  * @retval None
  */
void ADC_AverageTimesConfig(ADC_TypeDef* ADCx,u32 Times)
{
    u32 tmpreg=0;       
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_ADC_AverageTimes(Times));

    tmpreg = ADCx->CR2;
    tmpreg &= (~ADC_CR2_AVGT);
    tmpreg |= ((Times));
    ADCx->CR2 = tmpreg;       
}

/**
  * @brief ADC Ready Time Config
  * @param ADCx:ADC Peripheral
  * @param ReadyTime:0x0-0xFF
  * @retval None
  */
void ADC_ReadyTimeConfig(ADC_TypeDef* ADCx,u32 ReadyTime)
{
    u32 tmpreg=0;
    assert_param(IS_ADC_ALL_PERIPH(ADCx));

    tmpreg = ADCx->CR2;
    tmpreg &= (~ADC_CR2_RDTC);
    tmpreg |= ReadyTime;
    ADCx->CR2 = tmpreg;       
}

/**
  * @brief  Set ADC sample times the specified ADC peripheral.
  * @param  ADCx: where x can be 1 to select the ADC1 peripheral.
  * @param  sampletime: sample time value (3~255).
  * @retval None
  */
void ADC_SampleTimeConfig(ADC_TypeDef* ADCx, u8 SampleTime)
{
  u32 tmpreg = 0;
        /* Check the parameters */
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_ADC_SampleTime(SampleTime));   
        tmpreg = ADCx->CR2;
        tmpreg &= SetSampleTime_CR2_MASK;
        tmpreg |= (SampleTime << 8);
  ADCx->CR2 = tmpreg;
}

/**
  * @brief ADC Scan Command
  * @param ADCx:ADC Peripheral
  * @param NewState:FunctionalState type variable
  * @retval None
  */
void ADC_ScanCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_FUNCTIONAL_STATE(NewState));

    if (NewState != DISABLE)
    {
        /* Set the SCANE bit to Enable the ADC scan */
        ADCx->CR1 |= ADC_CR1_SCANE;
    }
    else
    {
        ADCx->CR1 &= (~ADC_CR1_SCANE);
    }
}

/**
  * @brief ADC Scan Channel Config
  * @param ADCx:ADC Peripheral
  * @param ADC_Channel:ADC Peripheral
  * @param ADC_Channel:the ADC channel to configure.
        *          This parameter can be one of the following values:
  *            @arg ADC_Channel_0: ADC Channel0 selected
  *            @arg ADC_Channel_1: ADC Channel1 selected
  *            @arg ADC_Channel_2: ADC Channel2 selected
  *            @arg ADC_Channel_3: ADC Channel3 selected
  *            @arg ADC_Channel_4: ADC Channel4 selected
  *            @arg ADC_Channel_5: ADC Channel5 selected
  *            @arg ADC_Channel_6: ADC Channel6 selected
  *            @arg ADC_Channel_7: ADC Channel7 selected
  *            @arg ADC_Channel_8: ADC Channel8 selected
  *            @arg ADC_Channel_9: ADC Channel9 selected
  *            @arg ADC_Channel_10: ADC Channel10 selected
  *            @arg ADC_Channel_11: ADC Channel11 selected
  *            @arg ADC_Channel_12: ADC Channel12 selected
  *            @arg ADC_Channel_13: ADC Channel13 selected
  *            @arg ADC_Channel_14: ADC Channel14 selected
  *            @arg ADC_Channel_15: ADC Channel15 selected
        *            @arg ADC_Channel_16: ADC Channel16 selected
  *            @arg ADC_Channel_17: ADC Channel17 selected
  *            @arg ADC_Channel_18: ADC Channel18 selected
  * @param ScanChannel: ADC scan channel (0~19)
  * @retval None
  */
void ADC_ScanChannelConfig(ADC_TypeDef* ADCx,u32 ADC_Channel,u32 ScanChannel)
{
    u32 tmpreg=0;          
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_ADC_Channel(ADC_Channel));
    assert_param(IS_ADC_ScanChannel(ScanChannel));       

    if(ScanChannel <= 5)
    {
        tmpreg = ADCx->SCHR1;          
        tmpreg &= (~(ADC_SCHR1_CH0<<(ScanChannel*5)));
        tmpreg |= ((ADC_Channel>>16)<<ScanChannel*5);
        ADCx->SCHR1 = tmpreg;
    }
    if((ScanChannel == 6)&&(ScanChannel == 7))
    {
        tmpreg = ADCx->SCHR2;          
        tmpreg &= (~(ADC_SCHR2_CH6<<((ScanChannel-6)*5)));
        tmpreg |= ((ADC_Channel>>16)<<(ScanChannel-6)*5);
        ADCx->SCHR2 = tmpreg;
    }
}

/**
  * @brief ADC Scan Channel Number Config
  * @param ADCx:ADC Peripheral
  * @param ScanNumber: the number of ADC scan channel (2~20)
  * @retval None
  */
void ADC_ScanChannelNumberConfig(ADC_TypeDef* ADCx,u32 ScanNumber)
{
    u32 tmpreg=0;          
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_ADC_ScanChannelNumber(ScanNumber));       

    tmpreg = ADCx->SCHR2;          
    tmpreg &= (~ADC_SCHR2_SCNT);
    tmpreg |= ((ScanNumber-1) << 16);
    ADCx->SCHR2 = tmpreg;
}

u16 ADC_GetScanData(ADC_TypeDef* ADCx,u32 ScanChannel)
{
        /* Check the parameters */
        u16 data;
        assert_param(IS_ADC_ALL_PERIPH(ADCx));
        assert_param(IS_ADC_ScanChannel(ScanChannel));
        /* Return the selected ADC conversion value */
        if (ScanChannel==0)
        {
                data = ADCx->SCHDR0;
        }
        else if(ScanChannel==1)
        {
          data = ADCx->SCHDR1;
        }
        else if(ScanChannel==2)
        {
                data = ADCx->SCHDR2;
        }
        else if(ScanChannel==3)
        {
                data = ADCx->SCHDR3;
        }
        else if(ScanChannel==4)
        {
                data = ADCx->SCHDR4;
        }
        else if(ScanChannel==5)
        {
                data = ADCx->SCHDR5;
        }
        else if(ScanChannel==6)
        {
                data = ADCx->SCHDR6;
        }
        else
        {
                data = ADCx->SCHDR7;
        }
       
  data=ADC_DataCalculator1_6_0(ADCx,data);
        return data;
}
/**
  * @}
  */



使用特权

评论回复
rickluo|  楼主 | 2024-3-22 09:10 | 显示全部楼层
#技术资源#

PT32Y003数据手册

PT32Y003x数据手册1.3.pdf (3 MB)

使用特权

评论回复
rickluo|  楼主 | 2024-3-22 09:11 | 显示全部楼层
#技术资源#

用户参考手册:

PRM0006 PT32Y003参考手册1.4.zip (6.66 MB)

使用特权

评论回复
rickluo|  楼主 | 2024-3-22 09:12 | 显示全部楼层
#技术资源#


IDE环境配置指南2.0

PUM0001 IDE环境配置指南2.0.pdf (2.78 MB)

使用特权

评论回复
rickluo|  楼主 | 2024-3-22 09:13 | 显示全部楼层
#申请开发板#

PT32Y003x开发套件用户指南1.0(开发板使用说明)

需要开发板的请联系...


PUM0008 PT32Y003x开发套件用户指南1.0.pdf (586.45 KB)

使用特权

评论回复
@lonely| | 2024-3-26 09:53 | 显示全部楼层
价格多少?

使用特权

评论回复
rickluo|  楼主 | 2024-3-26 14:16 | 显示全部楼层

TSSOP20  不超过0.65 ,

使用特权

评论回复
xionghaoyun| | 2024-3-26 14:23 | 显示全部楼层
能不能寄开发板啊

使用特权

评论回复
rickluo|  楼主 | 2024-3-26 14:33 | 显示全部楼层
xionghaoyun 发表于 2024-3-26 14:23
能不能寄开发板啊

可以的,VX18566239000 ,发地址来;

使用特权

评论回复
ghost_z| | 2024-4-6 14:12 | 显示全部楼层
ADC_DataCalculator()里面为啥要这样计算,不是12位的吗?怎么有8191

使用特权

评论回复
rickluo|  楼主 | 2024-4-7 10:27 | 显示全部楼层
是12BIT ADC

使用特权

评论回复
yuyy1989| | 2024-4-7 11:15 | 显示全部楼层
ghost_z 发表于 2024-4-6 14:12
ADC_DataCalculator()里面为啥要这样计算,不是12位的吗?怎么有8191

看他给的数据手册就知道了
Dingtalk_20240407111434.jpg

使用特权

评论回复
ghost_z| | 2024-4-7 12:58 | 显示全部楼层
12位就是最大4095呀,最后一位无效的就右移一位呀

使用特权

评论回复
rickluo|  楼主 | 2024-4-8 11:51 | 显示全部楼层
ghost_z 发表于 2024-4-7 12:58
12位就是最大4095呀,最后一位无效的就右移一位呀

是的

使用特权

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

本版积分规则

59

主题

425

帖子

4

粉丝