diff options
author | Nick Saulnier | 2018-11-27 15:22:06 -0600 |
---|---|---|
committer | Nick Saulnier | 2018-11-27 15:22:06 -0600 |
commit | 99b1bfd8ca8780fd2306c2c939f3fd477b2e5218 (patch) | |
tree | 7fbcc538db94786d830cc5282dd9e41425b0af0e | |
parent | f43599464e8e879a127241b68fbeb0abca4cbd9f (diff) | |
download | pru-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.txt | 6 | ||||
-rw-r--r-- | examples/am335x/PRU_ADC_onChip/pru_adc_firmware.c | 8 | ||||
-rw-r--r-- | examples/am335x/PRU_ADC_onChip/pru_adc_userspace/pru_adc_userspace.c | 4 |
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 | ||
48 | BUILD FIRMWARE & USERSPACE CODE | 48 | BUILD 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 | ||
56 | LOAD FIRMWARE & USERSPACE CODE ONTO BOARD | 56 | LOAD FIRMWARE & USERSPACE CODE ONTO BOARD |
57 | PRU firmware and ARM userspace code are generated in the gen/ folders of | 57 | PRU firmware and ARM userspace code are generated in the gen/ folders of |
58 | PRU_ADC/ and PRU_ADC/pru_adc_userspace/ respectively. | 58 | PRU_ADC_onChip/ and PRU_ADC_onChip/pru_adc_userspace/ respectively. |
59 | 59 | ||
60 | Load the PRU firmware PRU_ADC.out onto the BeagleBone Black at | 60 | Load the PRU firmware PRU_ADC_onChip.out onto the BeagleBone Black at |
61 | /lib/firmware/ | 61 | /lib/firmware/ |
62 | 62 | ||
63 | Load the ARM userspace code pru_adc_userspace onto the BeagleBone Black at | 63 | Load 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); |