trigonometría de punto fijo para aplicaciones integradas

9

Necesito hacer transformaciones rotativas (y otras) en una aplicación integrada, que requiera las funciones sin () cos () y tan (). Sé que puedes usar tablas de consulta, y esa es la única solución que pude encontrar haciendo mi propia investigación, pero ¿hay una buena biblioteca de puntos fijos por ahí?

Estoy pensando en usar un cortex M3 para la aplicación, así que quiero mantenerme alejado del punto flotante tanto como sea posible para mantener las aplicaciones rápidas.

    
pregunta Bob

2 respuestas

6

Un buen enfoque para hacer trigonometría en aplicaciones integradas es utilizar aproximaciones polinómicas a las funciones que necesita. El código es compacto, los datos constan de unos pocos coeficientes y las únicas operaciones requeridas son multiplicar y sumar / restar. Muchos sistemas integrados tienen multiplicadores de hardware, lo que proporciona un buen rendimiento.

    
respondido por el Dave Tweed
3

¿Se opone a usar las bibliotecas de Cortex de punto fijo para esto?

  

q31_t arm_sin_q31 (q31_t x)
    Rápida aproximación a la función sinusoidal trigonométrica para datos Q31.

desde:

  

CMSIS-DSP: colección de bibliotecas DSP con más de 60 funciones para diversos tipos de datos: punto fijo (q7 fraccional, q15, q31) y punto flotante de precisión simple (32 bits). La biblioteca está disponible para Cortex-M0, Cortex-M3 y Cortex-M4.

Utiliza una tabla de búsqueda con interpolación cuadrática, pero es bastante rápido. Podría adaptarlo a la interpolación lineal para una velocidad más rápida pero más error.

También tenga en cuenta que incluso Cortex M4 no necesariamente tiene FPU. Los he visto llamados "M4F" si lo hacen.

    
respondido por el endolith

Lea otras preguntas en las etiquetas