aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Saulnier2018-11-27 15:22:06 -0600
committerNick Saulnier2018-11-27 15:22:06 -0600
commit99b1bfd8ca8780fd2306c2c939f3fd477b2e5218 (patch)
tree7fbcc538db94786d830cc5282dd9e41425b0af0e
parentf43599464e8e879a127241b68fbeb0abca4cbd9f (diff)
downloadpru-software-support-package-99b1bfd8ca8780fd2306c2c939f3fd477b2e5218.tar.gz
pru-software-support-package-99b1bfd8ca8780fd2306c2c939f3fd477b2e5218.tar.xz
pru-software-support-package-99b1bfd8ca8780fd2306c2c939f3fd477b2e5218.zip
examples/am335x/PRU_ADC_onChip: bug fixesv5.4.0
Fixed several bugs in PRU_ADC_onChip: * pru_adc_userspace.c - changed firmware name from PRU_ADC.out to PRU_ADC_onChip.out - changed size of RPMsg read from MAX_BUFFER_SIZE to RPMSG_MESSAGE_SIZE * pru_adc_firmware.c - reduced noise in single-ended ADC voltage measurements by setting SEL_INM_SWC_3_0=0x8 (VREFN) for each STEPCONFIG register * README.txt - changed PRU_ADC to PRU_ADC_onChip Signed-off-by: Nick Saulnier <nsaulnier@ti.com>
-rw-r--r--examples/am335x/PRU_ADC_onChip/README.txt6
-rw-r--r--examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c8
-rw-r--r--examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c4
3 files changed, 13 insertions, 5 deletions
diff --git a/examples/am335x/PRU_ADC_onChip/README.txt b/examples/am335x/PRU_ADC_onChip/README.txt
index 55693e8..047598b 100644
--- a/examples/am335x/PRU_ADC_onChip/README.txt
+++ b/examples/am335x/PRU_ADC_onChip/README.txt
@@ -46,7 +46,7 @@ PRU_ADC
46 |--pru_adc_userspace.c userspace code that interacts with PRU0 46 |--pru_adc_userspace.c userspace code that interacts with PRU0
47 47
48BUILD FIRMWARE & USERSPACE CODE 48BUILD FIRMWARE & USERSPACE CODE
49$ cd <PATH_TO_PRU_SW_SUPPORT_PACKAGE>/examples/am335x/PRU_ADC/ 49$ cd <PATH_TO_PRU_SW_SUPPORT_PACKAGE>/examples/am335x/PRU_ADC_onChip/
50$ make clean 50$ make clean
51$ make 51$ make
52$ cd pru_adc_userspace/ 52$ cd pru_adc_userspace/
@@ -55,9 +55,9 @@ $ make
55 55
56LOAD FIRMWARE & USERSPACE CODE ONTO BOARD 56LOAD FIRMWARE & USERSPACE CODE ONTO BOARD
57PRU firmware and ARM userspace code are generated in the gen/ folders of 57PRU firmware and ARM userspace code are generated in the gen/ folders of
58PRU_ADC/ and PRU_ADC/pru_adc_userspace/ respectively. 58PRU_ADC_onChip/ and PRU_ADC_onChip/pru_adc_userspace/ respectively.
59 59
60Load the PRU firmware PRU_ADC.out onto the BeagleBone Black at 60Load the PRU firmware PRU_ADC_onChip.out onto the BeagleBone Black at
61/lib/firmware/ 61/lib/firmware/
62 62
63Load the ARM userspace code pru_adc_userspace onto the BeagleBone Black at 63Load the ARM userspace code pru_adc_userspace onto the BeagleBone Black at
diff --git a/examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c b/examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c
index 8744005..7abe5eb 100644
--- a/examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c
+++ b/examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c
@@ -175,11 +175,13 @@ void init_adc()
175 * Mode = 0; SW enabled, one-shot 175 * Mode = 0; SW enabled, one-shot
176 * Averaging = 0x3; 8 sample average 176 * Averaging = 0x3; 8 sample average
177 * SEL_INP_SWC_3_0 = 0x4 = Channel 5 177 * SEL_INP_SWC_3_0 = 0x4 = Channel 5
178 * SEL_INM_SWC_3_0 = 1xxx = VREFN (reduces noise in single ended mode)
178 * use FIFO0 179 * use FIFO0
179 */ 180 */
180 ADC_TSC.STEPCONFIG1_bit.MODE = 0; 181 ADC_TSC.STEPCONFIG1_bit.MODE = 0;
181 ADC_TSC.STEPCONFIG1_bit.AVERAGING = 3; 182 ADC_TSC.STEPCONFIG1_bit.AVERAGING = 3;
182 ADC_TSC.STEPCONFIG1_bit.SEL_INP_SWC_3_0 = 4; 183 ADC_TSC.STEPCONFIG1_bit.SEL_INP_SWC_3_0 = 4;
184 ADC_TSC.STEPCONFIG1_bit.SEL_INM_SWC_3_0 = 8;
183 ADC_TSC.STEPCONFIG1_bit.FIFO_SELECT = 0; 185 ADC_TSC.STEPCONFIG1_bit.FIFO_SELECT = 0;
184 186
185 /* 187 /*
@@ -187,11 +189,13 @@ void init_adc()
187 * Mode = 0; SW enabled, one-shot 189 * Mode = 0; SW enabled, one-shot
188 * Averaging = 0x3; 8 sample average 190 * Averaging = 0x3; 8 sample average
189 * SEL_INP_SWC_3_0 = 0x5 = Channel 6 191 * SEL_INP_SWC_3_0 = 0x5 = Channel 6
192 * SEL_INM_SWC_3_0 = 1xxx = VREFN (reduces noise in single ended mode)
190 * use FIFO0 193 * use FIFO0
191 */ 194 */
192 ADC_TSC.STEPCONFIG2_bit.MODE = 0; 195 ADC_TSC.STEPCONFIG2_bit.MODE = 0;
193 ADC_TSC.STEPCONFIG2_bit.AVERAGING = 3; 196 ADC_TSC.STEPCONFIG2_bit.AVERAGING = 3;
194 ADC_TSC.STEPCONFIG2_bit.SEL_INP_SWC_3_0 = 5; 197 ADC_TSC.STEPCONFIG2_bit.SEL_INP_SWC_3_0 = 5;
198 ADC_TSC.STEPCONFIG2_bit.SEL_INM_SWC_3_0 = 8;
195 ADC_TSC.STEPCONFIG2_bit.FIFO_SELECT = 0; 199 ADC_TSC.STEPCONFIG2_bit.FIFO_SELECT = 0;
196 200
197 /* 201 /*
@@ -199,11 +203,13 @@ void init_adc()
199 * Mode = 0; SW enabled, one-shot 203 * Mode = 0; SW enabled, one-shot
200 * Averaging = 0x3; 8 sample average 204 * Averaging = 0x3; 8 sample average
201 * SEL_INP_SWC_3_0 = 0x6 = Channel 7 205 * SEL_INP_SWC_3_0 = 0x6 = Channel 7
206 * SEL_INM_SWC_3_0 = 1xxx = VREFN (reduces noise in single ended mode)
202 * use FIFO0 207 * use FIFO0
203 */ 208 */
204 ADC_TSC.STEPCONFIG3_bit.MODE = 0; 209 ADC_TSC.STEPCONFIG3_bit.MODE = 0;
205 ADC_TSC.STEPCONFIG3_bit.AVERAGING = 3; 210 ADC_TSC.STEPCONFIG3_bit.AVERAGING = 3;
206 ADC_TSC.STEPCONFIG3_bit.SEL_INP_SWC_3_0 = 6; 211 ADC_TSC.STEPCONFIG3_bit.SEL_INP_SWC_3_0 = 6;
212 ADC_TSC.STEPCONFIG3_bit.SEL_INM_SWC_3_0 = 8;
207 ADC_TSC.STEPCONFIG3_bit.FIFO_SELECT = 0; 213 ADC_TSC.STEPCONFIG3_bit.FIFO_SELECT = 0;
208 214
209 /* 215 /*
@@ -211,11 +217,13 @@ void init_adc()
211 * Mode = 0; SW enabled, one-shot 217 * Mode = 0; SW enabled, one-shot
212 * Averaging = 0x3; 8 sample average 218 * Averaging = 0x3; 8 sample average
213 * SEL_INP_SWC_3_0 = 0x7= Channel 8 219 * SEL_INP_SWC_3_0 = 0x7= Channel 8
220 * SEL_INM_SWC_3_0 = 1xxx = VREFN (reduces noise in single ended mode)
214 * use FIFO0 221 * use FIFO0
215 */ 222 */
216 ADC_TSC.STEPCONFIG4_bit.MODE = 0; 223 ADC_TSC.STEPCONFIG4_bit.MODE = 0;
217 ADC_TSC.STEPCONFIG4_bit.AVERAGING = 3; 224 ADC_TSC.STEPCONFIG4_bit.AVERAGING = 3;
218 ADC_TSC.STEPCONFIG4_bit.SEL_INP_SWC_3_0 = 7; 225 ADC_TSC.STEPCONFIG4_bit.SEL_INP_SWC_3_0 = 7;
226 ADC_TSC.STEPCONFIG4_bit.SEL_INM_SWC_3_0 = 8;
219 ADC_TSC.STEPCONFIG4_bit.FIFO_SELECT = 0; 227 ADC_TSC.STEPCONFIG4_bit.FIFO_SELECT = 0;
220 228
221 /* 229 /*
diff --git a/examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c b/examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c
index 6abdef0..12f2d28 100644
--- a/examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c
+++ b/examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c
@@ -122,7 +122,7 @@ static uint16_t readADCchannel(const char *adcChannel)
122 122
123 FILE *sysfs_node; 123 FILE *sysfs_node;
124 char firmware[] = "/sys/class/remoteproc/remoteproc1/firmware"; 124 char firmware[] = "/sys/class/remoteproc/remoteproc1/firmware";
125 char firmwareName[] = "PRU_ADC.out"; 125 char firmwareName[] = "PRU_ADC_onChip.out";
126 sysfs_node = fopen(firmware, "r+"); 126 sysfs_node = fopen(firmware, "r+");
127 if (sysfs_node == NULL) { 127 if (sysfs_node == NULL) {
128 printf("cannot open firmware sysfs_node"); 128 printf("cannot open firmware sysfs_node");
@@ -194,7 +194,7 @@ static uint16_t readADCchannel(const char *adcChannel)
194 } 194 }
195 195
196 /* read voltage and channel back */ 196 /* read voltage and channel back */
197 size_t freadResult = read(pfds[0].fd, payload, MAX_BUFFER_SIZE); 197 size_t freadResult = read(pfds[0].fd, payload, RPMSG_MESSAGE_SIZE);
198 returnedVoltage = ((shared_struct *)payload)->voltage; 198 returnedVoltage = ((shared_struct *)payload)->voltage;
199 199
200 close(pfds[0].fd); 200 close(pfds[0].fd);