BeagleBoard I/O Pins code generation

1 Ansicht (letzte 30 Tage)
Ahmad
Ahmad am 5 Jun. 2012
Kommentiert: Franziska am 3 Dez. 2013
Hi,
Is there any way, using BeageBoard as hardware Target, one can create a simulink model that uses I/O pins on the BeagleBoard? I know there is an Embedded Coder BeagleBoard example but it doe not use any I/O pins (Analog and Digital.)
Thanks,
Ahmad.

Akzeptierte Antwort

Michael Lundgren
Michael Lundgren am 5 Okt. 2012
I just posted an example to File Exchnge (search for BeagleBoard GPIO) that illustrates how to access GPIO pins on the BeagleBoard. I took the liberty of using the code above for GPIO output. However, reading the GPIO pin was more involved. I used "popen" call instead of "system" as "system" call does not return any output aside from a success code.
By the way, using the example posted by Murat here, one can do a lot of things. Making Linux calls from a Simulink model opens a lot of doors. By using the same logic, one can control built-in LEDs on the board or read the USER push button status.
Note however that the method outlined here is not very fast. I was able to implement a blinking LED using a 50 ms sample time. Just don't expect very fast response. Also be careful with the GPIO pins as they are 1.8V. Most sensors out there use +5V logic lvels. Use a voltage divider circuit to interface these sensor to a GPIO pin configured as input. You can also use a logic level shifter. Sparkfun sells one for $3.

Weitere Antworten (1)

Murat Belge
Murat Belge am 6 Jun. 2012
The MATLAB R2012a release has a downloadable support package for BeagleBoard (installed by executing "targetinstaller" on the MATLAB command line). There are Simulink blocks for Video Capture, Video Display, Audio Capture/Display and UDP Send/Receive. There are no GPIO blocks as of yet. It is possible to use GPIO pins for digital Input/Output using the Embedded MATLAB function block. Let me know what exactly you are trying to do.
  5 Kommentare
Murat Belge
Murat Belge am 4 Okt. 2012
Below is the code that you can paste into an Embedded MATLAB Function block to use a GPIO pin as an output. Using a GPIO pin as an input is very similar.
function fcn(u)
%#codegen
% This MATLAB function shows how to setup and use a GPIO pin as output. The
% function basically issues a number of system calls to do the following:
% 1. Export GPIO pin for use
% 2. Setup GPIO direction as output
% 3. Write the value of input u to the GPIO pin
%
% Note that input should be a boolean scalar. If the value of u is zero the
% GPIO pin goes low. Else GPIO pin goes high.
persistent firstTime;
gpioPin = '139';
coder.extrinsic('disp');
if isempty(firstTime)
firstTime = 0;
if isequal(coder.target, 'rtw')
% Export GPIO pin
cmd = ['echo ', gpioPin, '> /sys/class/gpio/export'];
coder.ceval('system', c_string(cmd));
% Set GPIO pin direction to output
cmd = ['echo out> /sys/class/gpio/gpio', gpioPin, '/direction'];
coder.ceval('system', c_string(cmd));
else
disp('Initialize GPIO pin as output');
end
end
% Set GPIO pin logic level using a system call
if (u > 0)
cmd = ['echo 1 > /sys/class/gpio/gpio', gpioPin, '/value'];
else
cmd = ['echo 0 > /sys/class/gpio/gpio', gpioPin, '/value'];
end
if isequal(coder.target, 'rtw')
coder.ceval('system', c_string(cmd));
else
disp(cmd);
end
end
function str = c_string(str) % Convert MATLAB string to C-string by adding a string termination % character str = [str, 0]; end % code end
Franziska
Franziska am 3 Dez. 2013
Hi, My name is Fatemeh, Thank you for your code.I wanted to ask a question, Do you know how to access to the c code of GPIO block of matlab? my emmail address: fateme_nejatbakhsh@yahoo.com

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by