Your circuit topology looks basically right.
However, my first guess is that L1 isn't really a 10 mH inductor. If it were 10 µH, that could explain things. You are switching at 31.5 kHz, which has a period of 31.8 µs. You show a square wave, so the switch on and off times are half that, or 16 µs. Even with the inductor current starting at 0, at the end of one pulse you'd get (8.8 V)(16 µs)/(10 µH) = 14 A. You didn't provide any datasheets, but that's quite likely well past the saturation of L1, and possible the current capability of M1 and the supply.
Another possibility is that M1 isn't turning fully on. Again, since you didn't provide any datasheet, I can't comment further. Check what gate voltage M1 is specified for, then compare that to whatever you are driving it at. If the PWM is only a 5 V or 3.3 V digital signal, then quite likely M1 isn't turning fully on when the signal is high.
The next possibility is that the gate isn't being driven with enough current when switching. That is easily determined just by looking at the gate signal. Is it a nice and sharp square wave, or does it take it's time getting from one state to the other. If the latter, then the FET is spending too much time in between full on and full off. One possible solution is to use a FET driver chip.
Now that the datasheet for the FET has been provided (although only in comments), we can see this FET is clearly inappropriate for this gate drive. The low Rdson applies at 10 V gate drive. The gate threshold voltage can be as high as 4 V, and there is no guarantee what it does with only 5 V on the gate.
Since you only want 15 V out, a low voltage FET that is actually specified for 5 V gate drive would be good choice. For example, check out the IRFML8244. It can be driven directly from a digital logic output in many cases.
However, replacing the FET only addresses one of the possible issues. At such a slow switching frequency, you have to be careful about inductor saturation. You also need to do something to prevent the output from going too high. This could be as simple as a voltage divider from the output feeding a comparator input of the micro, which is set up to kill the PWM output when above some threshold.