Serial Peripheral Interface
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						27 Dec 2016 02:21				#84729
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Serial Peripheral Interface was created by monkey_biz			
			
				Hi everyone! This is my first post here. I am a 4th year electrical engineering student. I am part of a project of which we're using a beagle bone to output signals to an FPGA. The way we're doing this is through the use of SPI. To do this would I have to change a source code file or could I do this via writing my own script to retrieve these values in real time? (With the right program java can read/write 135 MB/s so speed isn't an issue for real time). This project is the first I've heard of LinuxCNC so any help would be greatly appreciated thanks!			
					Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						27 Dec 2016 03:28				#84731
		by andypugh
	
	
		
			
	
			
			 		
													
	
				Replied by andypugh on topic Serial Peripheral Interface			
			
				Can you explain where LinuxCNC fits into this system?
I rather think that you are confusing data-rate with latency. LinuxCNC typically transmits very little data (dozens of bytes) but it does it every 1mS +/- 25uS.
I am certain that we can help you with your project (I did 15 years postdoctoral research, so have pedagogic inclinations) but I question your underlying architecture.
					I rather think that you are confusing data-rate with latency. LinuxCNC typically transmits very little data (dozens of bytes) but it does it every 1mS +/- 25uS.
I am certain that we can help you with your project (I did 15 years postdoctoral research, so have pedagogic inclinations) but I question your underlying architecture.
Please Log in or Create an account to join the conversation.
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						30 Dec 2016 20:53				#84930
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Replied by monkey_biz on topic Serial Peripheral Interface			
			
				Yes, I understand that it will only output dozens of bits but I somehow need to write the SPI script. the LinuxCNC software is going onto a beagle bone black and I need to send the data packets via SPI to my FPGA through the outputs on the beagle.
I have been reading quite a bit about LinuxCNC and understand somewhat the process that happens I am just unsure where my piece of code would fit in to retrieve the outputted data packets from LinuxCNC and then send them to the FPGA.
I hope this makes a bit more sense as what I am trying to do?
					I have been reading quite a bit about LinuxCNC and understand somewhat the process that happens I am just unsure where my piece of code would fit in to retrieve the outputted data packets from LinuxCNC and then send them to the FPGA.
I hope this makes a bit more sense as what I am trying to do?
Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						30 Dec 2016 21:34				#84934
		by andypugh
	
	
		
			
	
			
			 		
													
	
				Replied by andypugh on topic Serial Peripheral Interface			
			
				There is a bitbanged SPI component here:
github.com/LinuxCNC/linuxcnc/blob/master...onents/max31855.comp
Might be a starting point.
					github.com/LinuxCNC/linuxcnc/blob/master...onents/max31855.comp
Might be a starting point.
Please Log in or Create an account to join the conversation.
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						07 Jan 2017 21:59				#85426
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Replied by monkey_biz on topic Serial Peripheral Interface			
			
				Wouldn't I be able to just use the SPI hardware provided on the beagle bone for this as opposed to do a bit banged SPI? I am doing my best to get acquainted with linux but it is proving to be tough			
					Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						17 Jan 2017 13:12				#85914
		by andypugh
	
	
		
			
				
In theory, yes.
You would need a simple HAL driver to get values from HAL and put them into the BB SPI registers.
Writing HAL drivers can often be surprisingly simple. Do you have any C-code examples using BB SPI?
					
	
			
			 		
													
	
				Replied by andypugh on topic Serial Peripheral Interface			
			Wouldn't I be able to just use the SPI hardware provided on the beagle bone for this as opposed to do a bit banged SPI? I am doing my best to get acquainted with linux but it is proving to be tough
In theory, yes.
You would need a simple HAL driver to get values from HAL and put them into the BB SPI registers.
Writing HAL drivers can often be surprisingly simple. Do you have any C-code examples using BB SPI?
Please Log in or Create an account to join the conversation.
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						19 Jan 2017 02:23				#86120
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Replied by monkey_biz on topic Serial Peripheral Interface			
			
				Currently this is what I'm following. embedded-basics.blogspot.ca/2014/10/enab...eaglebone-black.html
I am using this via Debian Jessie as opposed to wheezy. Wheezy's SPI cape manager is broken and they did fix it in the 4.1 kernel. About 3 days ago a machine kit beagle bone image just came out using jessie (can be found here elinux.org/Beagleboard:BeagleBoneBlack_Debian) which should mean that Linux users wanting Jessie should be able to finally do machine control as opposed to just simulation control. Of course you would know more about that than me so I am not 100% sure
					I am using this via Debian Jessie as opposed to wheezy. Wheezy's SPI cape manager is broken and they did fix it in the 4.1 kernel. About 3 days ago a machine kit beagle bone image just came out using jessie (can be found here elinux.org/Beagleboard:BeagleBoneBlack_Debian) which should mean that Linux users wanting Jessie should be able to finally do machine control as opposed to just simulation control. Of course you would know more about that than me so I am not 100% sure
Please Log in or Create an account to join the conversation.
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						19 Jan 2017 05:01				#86127
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Replied by monkey_biz on topic Serial Peripheral Interface			
			
				So that link for the 4.1 kernel machine kit is really only the 3.8.13 kernel.
One more question. The reason we need a real time kernel is to make sure the program LinuxCNC outputs the values on time so that the parallel ports can transmit them on time right?
I guess my question is where EXACTLY in the whole system when its running (from application to the motors) is the slowest part which needs to meet the time constraints of controlling it real time.
					One more question. The reason we need a real time kernel is to make sure the program LinuxCNC outputs the values on time so that the parallel ports can transmit them on time right?
I guess my question is where EXACTLY in the whole system when its running (from application to the motors) is the slowest part which needs to meet the time constraints of controlling it real time.
Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						19 Jan 2017 10:38				#86137
		by andypugh
	
	
		
			
	
			
			 		
													
	
				Replied by andypugh on topic Serial Peripheral Interface			
			
				Be aware that there is now considerable divergence between Machinekit and LinuxCNC. I you are using Machinekit then you may need to get your answers from their forums.
The realtime layer is not about speed so much as well-defined time-intervals.
G-code interpretation is non-realtime, the G-code is turned into a sequence of simple movements. These movements are converted to a set of axis positions and it is these positions that are transmitted by the realtime layer. Every 1mS a new set of positions comes out of the motion module, and also every 1mS the current hardware position and inputs are processed.
Basically, only the parts of LinuxCNC that "touch" hardware are realtime.
					The realtime layer is not about speed so much as well-defined time-intervals.
G-code interpretation is non-realtime, the G-code is turned into a sequence of simple movements. These movements are converted to a set of axis positions and it is these positions that are transmitted by the realtime layer. Every 1mS a new set of positions comes out of the motion module, and also every 1mS the current hardware position and inputs are processed.
Basically, only the parts of LinuxCNC that "touch" hardware are realtime.
Please Log in or Create an account to join the conversation.
- monkey_biz
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 10
 - Thank you received: 0
 
			
	
						19 Jan 2017 15:09				#86152
		by monkey_biz
	
	
		
			
	
			
			 		
													
	
				Replied by monkey_biz on topic Serial Peripheral Interface			
			
				ok so from my understanding so far
RT-Kernel is what helps define real time intervals
MachineKit is a program that just defines the HAL configurations to connect I/O's from linuxCNC?
and if G-code isn't real time how does it manage to have real time movement?
I apologize for all the questions this is pretty new to me
					RT-Kernel is what helps define real time intervals
MachineKit is a program that just defines the HAL configurations to connect I/O's from linuxCNC?
and if G-code isn't real time how does it manage to have real time movement?
I apologize for all the questions this is pretty new to me
Please Log in or Create an account to join the conversation.
		Time to create page: 0.125 seconds