想问一下,STM8的PWM最高能输出多快?2MHZ可以吗?
typedef enum
{
GPIO_Mode_In_FL_No_IT = (uint8_t)0b00000000, /*!< Input floating, no external interrupt */
GPIO_Mode_In_PU_No_IT = (uint8_t)0b01000000, /*!< Input pull-up, no external interrupt */
GPIO_Mode_In_FL_IT = (uint8_t)0b00100000, /*!< Input floating, external interrupt */
GPIO_Mode_In_PU_IT = (uint8_t)0b01100000, /*!< Input pull-up, external interrupt */
GPIO_Mode_Out_OD_Low_Fast = (uint8_t)0b10100000, /*!< Output open-drain, low level, 10MHz */
GPIO_Mode_Out_PP_Low_Fast = (uint8_t)0b11100000, /*!< Output push-pull, low level, 10MHz */
GPIO_Mode_Out_OD_Low_Slow = (uint8_t)0b10000000, /*!< Output open-drain, low level, 2MHz */
GPIO_Mode_Out_PP_Low_Slow = (uint8_t)0b11000000, /*!< Output push-pull, low level, 2MHz */
GPIO_Mode_Out_OD_HiZ_Fast = (uint8_t)0b10110000, /*!< Output open-drain, high-impedance level, 10MHz */
GPIO_Mode_Out_PP_High_Fast = (uint8_t)0b11110000, /*!< Output push-pull, high level, 10MHz */
GPIO_Mode_Out_OD_HiZ_Slow = (uint8_t)0b10010000, /*!< Output open-drain, high-impedance level, 2MHz */
GPIO_Mode_Out_PP_High_Slow = (uint8_t)0b11010000 /*!< Output push-pull, high level, 2MHz */
回3楼,这个定义与I/O能输出到少频率无管,影响的只是EMI特征。
定时器的时钟来自fMASTER,这个最快可以到24MHz(10x系列是16MHz),如果用16MHz时钟驱动定时器,2MHz PWM,每个周期8 cycle? 占空比的分辨率基本没剩下什么可调的了。
直接翻转IO也许更快些
用timer counter 来输出2MHz是不可能的,只有直接控制引脚输出
PWM才有可能
用timer counter 来输出2MHz是不可能的,只有直接控制引脚输出
PWM才有可能
楼上为什么会这样说?
不必直接控制引脚输出,用TIM可以很容易地输出2MHz,12MHz都没有问题。
输出2M没什么问题,输出更高的话输出明显失真,俺发现输出9M已经不行了,上升沿大概20ns,稳定时间大概为160ns
输出2M没什么问题,输出更高的话输出明显失真,俺发现输出9M已经不行了,上升沿大概20ns,稳定时间大概为160ns
输出9MHz时,请选用50MHz的输出驱动,不要使用2MHz或10MHz的驱动。